我有以下字符串:
"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
我希望将appserver
或system
或undefined
作为第一个匹配组,但我总是得到undefined
。
如果我从第一个匹配组中删除?
,我会收到appserver
和system
,但第一个和最后一个字符串不再匹配。
有什么问题?
请参阅http://jsfiddle.net/ZVQTb/5/了解测试平台。
答案 0 :(得分:2)
问题是你正在尝试查找“appserver”或“system”之外的任何内容,但是当它不存在时,“version”之前没有其他组。
/(?:what|which).+?(appserver|system)?.*version.*\son\s(\w*).*/i
注意:根据Evan敏锐的目光,将+
更改为+?
。