奇怪的正则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