为了账号安全,请及时绑定邮箱和手机立即绑定

为什么正则表达式构造函数需要双重转义?

为什么正则表达式构造函数需要双重转义?

为什么正则表达式构造函数需要双重转义?在下面的正则表达式中,\s表示空格字符。我想象正则表达式解析器,正在通过字符串看到\并知道下一个字符是特殊的。但事实并非如此,因为需要双重逃脱。为什么是这样?var res = new RegExp('(\\s|^)' + foo).test(moo);是否有一个具体的例子说明单个逃避如何被误解为其他东西?
查看完整描述

4 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您正在通过将字符串传递给RegExp构造函数来构造正则表达式。

您需要转义它,\以便您的字符串文字可以在将其转换为正则表达式之前将其表示为数据。


查看完整回答
反对 回复 2019-05-25
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

在那里你要创建一个字符串的代码里面,反斜杠是一个JavaScript转义字符第一,这意味着像转义序列\t\n\",等将被翻译成其JavaScript对口(制表符,换行符,报价等),和这将成为字符串的一部分。双反斜杠表示实际字符串本身中的单个反斜杠,因此如果您想在字符串中使用反斜杠,则首先将其转义。

所以当你通过说出你生成一个字符串时var someString = '(\\s|^)',你真正在做的是创建一个带有值的实际字符串(\s|^)


查看完整回答
反对 回复 2019-05-25
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

\在字符串中用于转义特殊字符。如果你想在字符串中使用反斜杠(例如对于\ in \ s),你必须通过反斜杠转义它。所以\成为\\。

编辑:甚至不得不在这里做,因为\\在我的回答中转向\。


查看完整回答
反对 回复 2019-05-25
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

正则表达式需要一个字符串表示\s,在JavaScript中可以使用文字生成"\\s"

这是一个现实的例子来说明为什么"\s"还不够:


alert("One backslash:          \s\nDouble backslashes: \\s");


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 966 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信