J'ai reçu le code comme celui-ci:
let first = "filename=awesome;blabla";
let second = first.match("/filename=(.*)/");
console.log(second);
Je veux obtenir génial dans la deuxième chaîne.
Donc mon expression régulière n'est pas tout à fait correcte car elle me donne génial;blabla
comment puis-je obtenir seulement " génial " dans la deuxième chaîne? p>
3 Réponses :
Tout d'abord, vous passez le regex sous forme de chaîne, vous devez donc supprimer les guillemets:
let first = "filename=awesome;blabla"; let second = first.match(/filename=([^;]*);/); console.log(second[1]);
Aussi, selon match function le résultat est un tableau où le premier élément est la correspondance complète et le reste des éléments ses groupes de capture associés. Donc, votre groupe sera dans le deuxième élément:
console.log(second[1]);
Vous devez également modifier votre regex afin d'obtenir uniquement les caractères avant le ';':
XXX
pouvez-vous jeter un oeil? J'ai mis à jour la question.
@NikaKurashvili je vois, je viens de modifier ma réponse;)
Essayez cette expression régulière:
first.match(/filename=([^;]+)/);
vous pouvez utiliser ceci:
const reg2 = /filename=(.*)/; const url = 'filename=awesome'; const id = url.match(reg2)[1]; console.log(id);
Malheureusement, la mise à jour des questions et réponses OP ne fonctionnera plus.
supprimez les guillemets
", vous essayez de faire correspondre la chaîne regex, essayezlet [ second] = first.match (/ filename = (. *) /);Merci beaucoup. comment ai-je raté ça? pourriez-vous m'aider avec une dernière chose? je mettrai à jour la question.
vous voulez que l'expression régulière soit
/filename=(.*?);/si vous ne voulez capturer que jusqu'au point-virgule/filename=(.+?);/devrait faire l'affaire