J'ai besoin de cette chaîne:
var x = 'Hi ${name}! How are you? ${name}, you are old! ${name} share with ${other} how do u ${feel}!'
Je dois savoir utiliser Regex combien distinct {$ ANY_THING} existe. Dans l'exemple ci-dessus, j'attends 3: $ {name}, $ {other}, $ {feel}
Je l'essaie:
x.match(\${([a-zA-Z]))
Mais la sortie est mauvaise 🙁
Merci!
Je dois savoir utiliser Regex combien distinct $ {ANY_THING} existe
x.match(/\$\{[^\}]+\}/g) .sort() .filter(function(element, index, array) { return index == array.indexOf(element); }) // this .filter() filters out the duplicates (since JS lacks of built in // unique filtering functions .length;
Le code ci-dessus renverrait 3
, car c'est le nombre d'éléments distincts dans la chaîne x
.
JSFiddle: http://jsfiddle.net/cae6P/
PS: Il n'est pas possible de le faire avec une expression régulière seulement. Vous devez filtrer les doublons à l'aide de la solution .filter()
ou d'autres similaires
Je trouve cette solution à #regex IRC Channel par farn user:
x.match(/\$\{([^\}]+)\}(?![\S\s]*\$\{\1\})/g);
sortie:
['${name}', '${other}', '${feel}']
et
x.match(/\$\{([^\}]+)\}(?![\S\s]*\$\{\1\})/g).length;
sortie:
3
🙂
Pour faire correspondre la syntaxe souhaitée, vous avez besoin de ceci:
x.match(/\$\{([a-zA-Z]+)\}/)