【问题标题】:Strange regex match node.js奇怪的正则表达式匹配 node.js
【发布时间】:2016-04-14 18:28:11
【问题描述】:

我在 node.js 中有一个正则表达式,它匹配一些奇怪的东西。看看这个:

var regex = new RegExp('(<\?%)|(%\?>)', 'g');
console.log('<tag><?%text%?></tag>'.match(regex));

导致[ '&gt;', '%', '%', '&gt;', '&gt;' ],我不明白为什么。

目的是匹配&lt;?%%?&gt;,它在https://regex101.com/ 上运行良好。

【问题讨论】:

    标签: javascript regex node.js match


    【解决方案1】:

    那是因为你还没有逃脱\。应该是\\

    Ctrl + Shift + I ,进入Console并粘贴以下代码。

    var regex = new RegExp('(<\\?%)|(%\\?>)', 'g');
    console.log('<tag><?%text%?></tag>'.match(regex));
    

    【讨论】:

    • @SLaks:你的理由是正确的。我展示了为什么 OP 的代码没有工作,因为 `` 没有转义。
    • 这确实有效......我错过了什么@SLaks?
    • @sweaver2112:该死的错字!在这个时候或这一天视力不好。
    • @remus:我猜他是说正则表达式文字可以生成更小、更简单的正则表达式,而无需转义反斜杠。但是,我可能不会在那里发表这样的笼统声明,因为菜鸟的解决方案对我来说似乎没问题。
    【解决方案2】:

    您的反斜杠正被字符串转义所吞噬。

    您应该改用正则表达式:/(&lt;\?%)|(%\?&gt;)/g

    【讨论】:

    • 您的徽章破坏了 CSS。应该通知 Meta !
    • 是的,noob 是对的,这就像一个错误。另外还有一件很奇怪的事情。 SLaks 有 500k 代表,我从来没有在这里见过他.. 直到现在你在哪里? :-)
    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 2019-12-30
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多