奇怪的正则expression式匹配node.js
我在node.js中有一个正则expression式,它匹配一些奇怪的东西。 看这个:
var regex = new RegExp('(<\?%)|(%\?>)', 'g'); console.log('<tag><?%text%?></tag>'.match(regex));
导致[ '>', '%', '%', '>', '>' ]
,我不明白为什么。
目的是匹配<?%
或%?>
并且在https://regex101.com/上工作得很好。
那是因为你没有逃脱。 应该是\\
。
按Ctrl + Shift + I ,进入Console
并粘贴以下代码。
var regex = new RegExp('(<\\?%)|(%\\?>)', 'g'); console.log('<tag><?%text%?></tag>'.match(regex));
你的反斜杠正在被string逃脱吞噬。
你应该使用正则expression式来代替: /(<\?%)|(%\?>)/g