Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可选组不在正则表达式中工作_Javascript_Regex - Fatal编程技术网

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

Javascript 可选组不在正则表达式中工作,javascript,regex,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

我有以下字符串:

"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
,但第一个和最后一个字符串不再匹配

怎么了


有关测试台,请参阅。

问题在于,您试图查找“appserver”或“system”之前的任何内容,但如果没有,则在“version”之前没有其他组


注:根据埃文敏锐的眼睛将
+
更改为
+?

它仍然给出“未定义”:-(我想你需要这样做:如果没有非贪婪+,我仍然在chrome上没有定义。更新以反映@Evan的评论。谢谢,它可以工作,但我不明白为什么。添加的?是应用于。+还是应用于以下匹配组?此上下文中的
字符应用其前面的内容-表示匹配应为非gr。)艾迪。
/(?:what|which).+?(appserver|system)?.*version.*\son\s(\w*).*/i