J'ai une longue chaîne en javascript comme
var string = 'abc234832748374asdf7943278934haskhjd';
J'essaie de faire correspondre comme
abc234832748374
- c'est-à-dire - j'ai essayé comme
string.match(\abc[^abc]|\def[^def]|)
mais cela ne me donne pas les deux chaînes car j'ai besoin de chiffres après eux?
Fondamentalement, j'ai besoin de abc
+ 8 caractères après et def
des 8-11 caractères après? Comment puis-je faire ceci ?
Si vous voulez les chaînes littérales abc
ou def
suivies de 8-11 chiffres, vous avez besoin de quelque chose comme:
(abc|def)[0-9]{8,11}
Vous pouvez le tester ici: http://www.regular-expressions.info/javascriptexample.html
Sachez que si vous ne souhaitez pas faire correspondre plus à 11 chiffres, vous aurez besoin d'une ancre (ou [^0-9]
) à la fin de la chaîne. S'il ne s'agit que de 8 ou plus, vous pouvez remplacer {8,11}
avec {8}
.
Pour élaborer une réponse déjà publiée, vous avez besoin d'une correspondance globale, comme suit:
var matches = string.match(/(abc|def)\d{8,11}/g);
Cela correspondra à tous les sous-ensembles de la chaîne qui:
Le drapeau "g" (global) vous donne une liste de toutes les correspondances, plutôt que juste la première.
Dans votre question, vous avez demandé 8-11 caractères plutôt que des chiffres. S'il importe peu qu'il s'agisse de chiffres ou d'autres caractères, vous pouvez utiliser "." au lieu de "\ d".
Je remarque également que chacune de vos correspondances d'exemple ont plus de 11 caractères après "abc" ou "def". Si un nombre quelconque de chiffres suffit, les expressions rationnelles suivantes peuvent être mieux adaptées:
var matches = string.match(/(abc|def)\d*/g);
var matches = string.match(/(abc|def)\d+/g);
var matches = string.match(/(abc|def)\d{8,}/g);
Vous pouvez faire correspondre abc[0-9]{8}
pour la chaîne abc
suivie de 8 chiffres.
Si les trois premiers caractères sont arbitraires et 8 à 11 chiffres après cela, essayez [a-z]{3}[0-9]{8,11}
Utilisez l'expression régulière ci-dessous pour obtenir la correspondance exacte,
string.match(/(abc|def)\d{8,11}/g);
Se termine par g
"g"
pour global
"i"
pour ignoreCase
"m"
pour multiligne