2016-07-30 60 views
1

我有以下:Babeljs产生意外的错误对正则表达式{M,N}量词

const checkCode = code => { 
    if(/^\+[0-9]{3}/[0-9]{3}[A-Z]+[0-9]{3}$/.test(code))){ 
     return true; 
    } 
    //run more code... 
} 

巴贝尔transpiler产生在正则表达式的第一{指向一个意外标记错误如:

if(/^\+[0-9]{ 
      ^
+0

也许这是一个在编译器中的错误。你可以做'var regex = new Regex('^ \ + [0-9] {3} \ - [0-9] {3} [AZ] + [0-9] {3} $')'然后做'if(regex.test(code)){// do stuff}'? –

+0

如果切换到'if(code.match(/^\ + [0-9] {3} \ - [0-9] {3} [AZ] + [0-9] { 3} $ /)){'? –

+0

你可以发布你的'.babelrc'设置和所有安装的babel插件/预设/ etc的版本吗? – Jacob

回答

1

巴贝尔错误可能指向一个奇怪的道理,但你显然有一些拼写错误/错误在该行:

if(/^\+[0-9]{3}/[0-9]{3}[A-Z]+[0-9]{3}$/.test(code))){ 
//    ^         ^
+0

虽然该模式需要“/”字符。我已经删除了额外的parens,但编译器错误并没有消失。 – 000

+0

@ 000:这不仅是额外的圆括号,还有斜线。你应该逃避它[如你原来那样](http://stackoverflow.com/revisions/38669468/2) – Bergi

0

删除多余的括号后,继续编译器错误。然后我逃脱了模式中的“/”,错误消失了。

由于JavaScript引擎使用“/”表示开头和转义“/”内的图案发送的错误消息的正则表达式模式的结尾。为什么译员将错误标记放在量词字符上还不清楚。