2016-07-30 7 views
1

Ich habe folgend:Babeljs unerwartete Fehler für regex {m, n} quantifier

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

Babel Transpiler erzeugt einen unerwarteten Token Fehler zeigt auf den ersten { des regulären Ausdrucks wie in:

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

Vielleicht ist es ein Fehler im Transpiler. Kann man 'var regex = neue Regex ('^ \ + [0-9] {3} \ - [0-9] {3} [AZ] + [0-9] {3} $') und dann tue 'if (regex.test (code)) {// tu stuff}'? –

+0

Erhalten Sie den gleichen Fehler, wenn Sie zu "if (code.match (/^\ + [0-9] {3} \ - [0-9] {3} [AZ] + [0-9] { 3} $ /)) {'? –

+0

Können Sie Ihre '.babelrc' Einstellungen und die Versionen aller installierten Babel Plugins/Presets/etc posten? – Jacob

Antwort

1

Der babel Fehler bei einem seltsamen Zeichen zeigen könnte, aber man deutlich ein paar Tippfehler/Fehler in dieser Zeile hat:

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

Das Muster erfordert jedoch das Zeichen "/". Ich hatte bereits die zusätzlichen Parens entfernt, aber der Compilerfehler ist nicht verschwunden. – 000

+0

@ 000: Es ist nicht nur die zusätzliche Klammer, sondern auch der Schrägstrich. Sie sollten es [wie Sie ursprünglich] entkommen (http://stackoverflow.com/revisions/38669468/2) – Bergi

0

Nachdem die zusätzlichen Klammern entfernt wurden, wurde der Compilerfehler fortgesetzt. Ich entkam dann dem "/" in dem Muster und der Fehler verschwand.

Da javascript engine "/" verwendet, um den Anfang und das Ende eines Regex-Musters zu bezeichnen, das unescaped "/" innerhalb des Musters die falsche Nachricht gesendet hat. Warum der Transpiler den Fehlermarker auf das Quantifiziererzeichen setzt, ist unklar.