2013-04-29 107 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);