質問

I need this string:

var x = 'Hi ${name}! How are you? ${name}, you are old! ${name} share with ${other} how do u ${feel}!'

I need to know using Regex how much distinct ${ANY_THING} exists. In example above i expect 3: ${name}, ${other}, ${feel}

I'm trying it:

x.match(\${([a-zA-Z]))

But the output is wrong :(

Thanks!

役に立ちましたか?

解決 2

I find this solution at #regex IRC Channel by farn user:

x.match(/\$\{([^\}]+)\}(?![\S\s]*\$\{\1\})/g);

output:

['${name}',
 '${other}',
 '${feel}']

and

x.match(/\$\{([^\}]+)\}(?![\S\s]*\$\{\1\})/g).length;

output:

3

:)

他のヒント

I need to know using Regex how much distinct ${ANY_THING} exists

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;

The code above would return 3, as that's how many distinct items are in the x string.

JSFiddle: http://jsfiddle.net/cae6P/

PS: It's not possible to do it with regular expression only. You need to filter duplicates using the .filter() solution or some other similar

To match the syntax you want you need this:

x.match(/\$\{([a-zA-Z]+)\}/)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top