可选组不在正则表达式中工作

时间:2013-10-29 02:42:18

标签: javascript regex

我有以下字符串:

"What version is installed on production server?"
"What appserver version is installed on production server?"
"What system version is installed on production server?"
"What os version is installed on production server?"

以下正则表达式:

 /(?:what|which).*(appserver|system)?.*version.*\son\s(\w*).*/i

我希望将appserversystemundefined作为第一个匹配组,但我总是得到undefined

如果我从第一个匹配组中删除?,我会收到appserversystem,但第一个和最后一个字符串不再匹配。

有什么问题?

请参阅http://jsfiddle.net/ZVQTb/5/了解测试平台。

1 个答案:

答案 0 :(得分:2)

问题是你正在尝试查找“appserver”或“system”之外的任何内容,但是当它不存在时,“version”之前没有其他组。

/(?:what|which).+?(appserver|system)?.*version.*\son\s(\w*).*/i

FIDDLE

注意:根据Evan敏锐的目光,将+更改为+?