【发布时间】:2018-02-09 04:24:19
【问题描述】:
RegExp /\c/ 不会触发任何语法错误。
console.log(/\c/)
问题是为什么它不是语法错误。由于语言规范,我猜Pattern→Disjunction→Alternative→Term→Atom→\ AtomEscape→CharacterEscape→IdentityEscape,然后它到达SourceCharacter but not c不符合条件but not c。
https://www.ecma-international.org/ecma-262/8.0/#sec-regular-expressions-patterns
我想我是不是错了。
【问题讨论】:
-
我认为这被解释为一个空的控制字符。
\cX其中 X 是来自 A - Z 的字母。 -
嗯,但是
c ControlLetter没有opt符号。 -
/everythink/之间的所有想法都可以打印......!为什么? -
JS 引擎比正则表达式规范更宽松(除非我遗漏了规范的某些部分)。
/\c/匹配文字文本\c,就像其他无效转义一样(/\x/.test('\\x')、/\q/.test('\\q'))。 -
Annex B 定义了“更宽松”的规范。在 Annex B 规范中,
/\x/是有效的语法,但/\c/看起来是无效的。所以我写了这个问题。
标签: javascript