gpt4 book ai didi

javascript - Javascript 正则表达式文字和构造函数之间的差异

转载 作者:行者123 更新时间:2023-12-03 03:06:39 25 4
gpt4 key购买 nike

我们最近遇到了一个错误,一位开发人员将 RegExp 文字更改为构造函数调用,我想知道为什么会有任何差异。确切的代码是

var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);

与原来的

var parts = /rt:([^@]+)@(\d+)/.exec(tag);

何时 tag例如 rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077 ,第一个(有问题的)调用返回 null ,而第二个返回 ["rt:60C1C036-42FA-4073-B10B-1969BD2358FB@00000000077", "60C1C036-42FA-4073-B10B-1969BD2358FB", "00000000077"]

不用说,我恢复了更改,但我想知道为什么会有这样的差异。

最佳答案

有两个问题:

/ 不是表达式的一部分。它们是分隔符,标记正则表达式文字。如果您使用 RegExp,则必须删除它们,否则它们会按字面意思匹配斜杠。

其次,反斜杠是字符串文字中的转义字符。要为表达式创建文字 \,您必须在字符串中对其进行转义。

因此,等价物是:

new RegExp("rt:([^@]+)@(\\d+)")
<小时/>

特别是,如果您想使用 RegExp,转义会使表达式的编写变得更加困难。实际上,仅当您想要动态创建表达式时才需要它,也就是说,例如,如果您想要包含存储在变量中的文本。如果您有固定的表达式,则文字 /.../ 更容易编写且更简洁。

关于javascript - Javascript 正则表达式文字和构造函数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com