2017-02-17 3 views
0

Я ударил удар по дороге, пытаясь проверить электронную почту с помощью регулярного выражения. Я получаю неопределенную ошибку функции при попытке использовать встроенный метод JavaScript .test() для тестирования регулярных выражений. Существуют ли какие-то специальные ключевые слова для использования при ссылках на эти типы функций?Вызов js-функций в реакции-native

Спасибо! Я ценю ваш вклад.

Это два раздела кодов, вызывающих проблемы.

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

вы, кажется, пытается вызвать [ 'RegExp.prototype.test'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Reference/Global_Objects/RegExp/test) для объекта String. Попробуйте превратить вашу строку в реальный RegExp – Hamms

+0

Yeap, что имеет смысл. Я уже давно не возился с js. Благодаря! – Gabe

ответ

0

ваше регулярное выражение только строки, но не реальное регулярное выражение, вы должны создать регулярное выражение, как это:

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

регулярное выражение часто используется повторно. поэтому я предлагаю вам сделать это:

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

Пожалуйста, объясните свой ответ, а не просто сбросьте фрагмент кода. –

+0

, который сделал трюк, почему-то я вспомнил, что нужно использовать цитаты в прошлом. Благодаря! – Gabe

+0

вы можете создать регулярное выражение из строки следующим образом: var regex = new Regex ('^ [a-zA-Z0-9 _. + -] + @ (?: (?: [A-zA-Z0-9- ] + \.)? [a-zA-Z] + \.)? (gmail) \. com $ ') –