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之间没有区别吗?