2017-02-17 2 views
0

Ich habe einen Schlag auf der Straße, als ich versuchte, eine E-Mail über Regex zu validieren. Ich bekomme einen undefinierten Funktionsfehler beim Versuch, die eingebaute JavaScript .test() - Methode für Regex-Tests zu verwenden. Gibt es bestimmte spezielle Schlüsselwörter, die verwendet werden können, wenn auf diese Arten von Funktionen verwiesen wird?Aufruf von js-Funktionen im reaktiven nativen

Danke! Ich schätze deine Eingabe.

Dies sind die zwei Abschnitte von Codes, die Probleme verursachen.

class LoginForm extends Component { 

state = { email: '', password: '', warning: '', loading: false, color:  '#FFFFFF' }; 

    onButtonPress() { 
     const { email, password } = this.state; 

    this.setState({ loading: true }); 
    this.setState({ warning: '' }); 

    if (this.verifyEmail(email)) { 
    firebase.auth().signInWithEmailAndPassword(email, password) 
    .then(this.onLoginSuccess.bind(this)) 
    .catch(() => { 
     firebase.auth().createUserWithEmailAndPassword(email, password) 
     .then(this.onLoginSuccess.bind(this)) 
     .catch(this.onLoginFail.bind(this)); 
    }); 
    } 
    else { 
    this.onLoginFail.bind(this); 
    } 
} 

    verifyEmail = (email) => { 
    const regex = '^[a-zA-Z0-9_.+-][email protected](?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)? (gmail)\.com$'; 
    return regex.test(email); 
    } 
+0

Sie scheinen rufen zu versuchen, [ 'RegExp.prototype.test'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Referenz/Global_Objects/RegExp/test) für ein String-Objekt. Versuchen Sie, Ihre Zeichenfolge in eine tatsächliche RegExp – Hamms

+0

Yeap, das macht Sinn. Ich habe mich schon lange nicht mehr mit js beschäftigt. Vielen Dank! – Gabe

Antwort

0

Ihre Regex nur ein String aber keine echte regex, sollten Sie einen regulären Ausdruck wie folgt erstellen:

verifyEmail = (email) => { 
    const regex = /^[a-zA-Z0-9_.+-][email protected](?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)? (gmail)\.com$/; 
    return regex.test(email); 
} 

die Regex werden oft wiederverwendet werden. so schlage ich vor, Sie dies tun:

const regex = /^[a-zA-Z0-9_.+-][email protected](?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)? (gmail)\.com$/; 

var verifyEmail = (email) => { 
    return regex.test(email); 
} 
+0

Bitte erläutern Sie Ihre Antwort und nicht nur ein Code-Snippet. –

+0

das hat den Trick gemacht, aus irgendeinem Grund erinnerte ich mich daran, Zitate in der Vergangenheit zu verwenden. Vielen Dank! – Gabe

+0

können Sie eine Regex aus einer Zeichenfolge wie folgt erstellen: var regex = neue Regex ('^ [a-zA-Z0-9 _. + -] + @ (?: (?: [A-zA-Z0-9- ] + \.)? [a-zA-Z] + \.)? (gmail) \. com $ ') –

Verwandte Themen