2013-04-29 81 views
0

我需要能够确定字符串是否与已定义值列表匹配。匹配字符串到已定义字符串列表

说我有一个定义的字符串列表,例如

a | activ | blue | lagoon | ex (defind list is much longer and contains approx. 50+ possibilties) 

我应该能够匹配以下任何一种;

a 
a[name] 
activ 
activ[class=somevalue] 
blue 
lagoon[name=somevalue], ...e.t.c 

是否有可能通过正则表达式来确定一个字符串传递是否包含在定义的列表中?

感谢...

+0

哪里'name','class'和'somevalue'从何而来?你只想让他们周围的等号和方括号? – Bergi 2013-04-29 21:19:57

回答

1

只要字符串存储一致为:value | value(的价值和管之间有一个空格),你可以做平凡:

str.match(new RegExp(values.split(' | ').join('|')) 

如果需要数学确切的话,你可以使用values.split(' | ').join('\\b|\\b')

+1

+1。或者'也许'新的RegExp(values.split('|').join('|'))。test(str)'。 – Bergi 2013-04-29 21:20:42

0
^(a|activ|blue|lagoon)(?:\[(\w+)=?(\w*)\])?$ 

对于 “ACTIV [CLASS =东西]”

group 1 = activ 
group 2 = class 
group 3 = something 
0

是不是你在找什么?

/^(?:a|activ|blue|lagoon)\b(\[(?:name|class)(?:=somevalue)?])?$/.test(yourstring);