2017-02-17 3 views
0

정규식을 통해 이메일의 유효성을 검사 할 때 도로에서 충돌이 발생합니다. 정규식 테스트를 위해 기본 제공 JavaScript .test() 메서드를 사용하려고 할 때 정의되지 않은 함수 오류가 발생합니다. 이러한 유형의 함수를 참조 할 때 사용할 특별한 키워드가 있습니까?반응 네이티브에서 js 함수 호출

감사합니다. 귀하의 의견에 감사드립니다.

다음은 문제를 일으키는 코드의 두 섹션입니다.

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

정규식 자주 재사용 :

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

정규식 단순한 문자열이 아닌 진짜 정규식,이 같은 정규식을 만들어야합니다. 그래서 나는 이렇게 제안 :

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 정규식 ('^ [a-zA-Z0-9 _. + -] + @ (? :(? : [a-zA-Z0-9- ] + \.)? [a-zA-Z] + \.)? (gmail) \. com $ ') –

관련 문제