【发布时间】:2018-01-30 18:23:26
【问题描述】:
# cat test.js
function foo() {
var bmp = /^[\u{0020}-\u{007e}\u{00A0}-\u{FFFF}]+$/u;
}
# jshint test.js
test.js: line 2, col 15, Invalid regular expression.
test.js: line 2, col 56, Missing semicolon.
test.js: line 2, col 56, Expected an assignment or function call and instead saw an expression.
3 errors
# jshint -v
jshint v2.9.5
我在其他地方看到过关于旧版本的 jshint 拒绝有效正则表达式的帖子。是这种情况,还是我的表达有问题? https://regex101.com 声称 JavaScript 引擎在完全 unicode 模式下是可以的。
我有同样的问题:
var combine = /[\u{0020}-\u{007e}\u{00A0}-\u{0300}\u{036F}-\u{1AB0}\u{1AFF}-\u{1DC0}\u{1DCF}-\u{20D0}\u{20FF}-\u{FE20}\u{FE2F}-\u{FFFF}]/u;
对于奖励积分,如果这 是 jshint 限制,我可以告诉它忽略这一行吗?我对构建环境的控制不足,无法升级到更高版本的 jshint。
【问题讨论】:
-
This regex101 清楚地显示了模式中破折号的错误。可能jshint不理解unicode修饰符?
-
@JeffreyWesterkamp 见regex101.com/r/rO06B7/1,你忘了
u修饰符。 -
嗯刚刚发现
/u是 ECMAScript 6 中的新功能?因此,鉴于我的目标平台,我遇到的问题比 jshint 拒绝它更大。 -
@ctwheels:这实际上意味着不同的东西(请参阅mathiasbynens.be/notes/javascript-escapes#unicode-code-point 了解
\u{nnnn}的含义)。它仍然失败,虽然这次没有第一个错误消息行 -
你在说什么更大的问题?
标签: javascript regex unicode ecmascript-6 jshint