Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 正则表达式在浏览器上工作,但在Node.js中不工作_Javascript_Regex_Node.js - Fatal编程技术网

Javascript 正则表达式在浏览器上工作,但在Node.js中不工作

Javascript 正则表达式在浏览器上工作,但在Node.js中不工作,javascript,regex,node.js,Javascript,Regex,Node.js,我必须匹配给定变量中的一些字符串。假设我有变量 var x = 'elseif testing'; 现在我想从这个字符串中获取值“testing”。我是这么写的 x.match(/^elseif(.*)/); 后来,我意识到有时我确实会得到字符串: var x = 'else if testing'; 所以我写了一个表达式来匹配: x.match(/^else[\s+]if(.*)/); 这在浏览器上运行良好,但在Node.js中不起作用。有什么原因吗?尝试不使用双转义符和字符类: x.

我必须匹配给定变量中的一些字符串。假设我有变量

var x = 'elseif testing';
现在我想从这个字符串中获取值“testing”。我是这么写的

x.match(/^elseif(.*)/);
后来,我意识到有时我确实会得到字符串:

var x = 'else if testing';
所以我写了一个表达式来匹配:

x.match(/^else[\s+]if(.*)/);

这在浏览器上运行良好,但在Node.js中不起作用。有什么原因吗?

尝试不使用
双转义符和
字符类

x.match(/^else\s*if(.*)/i);
还为不区分大小写的搜索添加了
i


另请注意,
[\s+]
也将匹配文字
+
,因为内部
字符类
+
(以及许多其他正则表达式特殊字符)被视为文字加号。

如果明确希望只匹配一个或零个空格,则:

x.match(/^else\s?if(.*)/i);

请注意,这“在浏览器中不起作用”-尝试一下,它在浏览器中的行为与node.js中的行为相同-即,它匹配
else if
else\t if
,但不匹配
elseif
+
修饰符表示1个或多个。您需要
*
修饰符,表示0或更多。那么,browser和node.js之间没有区别吗?