【发布时间】:2016-02-08 04:57:48
【问题描述】:
如果在 JavaScript 中使用 RegExp 对象创建的正则表达式中的转义字符需要再次转义,sizzle.js 中的以下代码如何工作 -
identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+"
如果\\\\\\\ = \ 和\\\w = \w,那么\0 = \0 在只使用一个反斜杠时如何?
在 Google 控制台中运行时,identifier 是 "(?:\\\\.|[\w-]|[^-\\xa0])+"
这是一个错误还是我没有正确理解?如果这是正确的并且这就是它的预期工作方式,\0 的目的是什么?
【问题讨论】:
-
用
\0代替\\x00 -
\0是一个简单的字符,可以立即被解析。对于特殊字符类或其他特殊事物(如\w),您可能只需要多个反斜杠,因为这些不仅仅是字符。这是你要问的吗? -
@Xufox 是的,谢谢。我还是新手,我注意到我的帖子包含太多反斜杠。
-
@Wiktor Stribiżew 谢谢你的回答。我发现了一个网站,它可以更深入地了解 \0 字符到底是什么,以及为什么应该使用 \\x00 来代替。根据该网站,\0 是一个“八进制转义序列”,在 ES5 中已被弃用。 \\x00 或“十六进制转义序列”应改为使用。这是我找到的链接 - mathiasbynens.be/notes/javascript-escapes
-
我只删除了一条评论。我的答案不可能那么短。很高兴它让您进行了更深入的研究。
标签: javascript regex sizzle