2014-03-31 2 views
1

내가 질문에 대답하고 다음 반환 false정규식 생성자가 작동하지 않는 이유는 무엇입니까?

var regexp = new RegExp("([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})"); 
var result = regexp.test($("#email").val()); // returns false 

var regexp = /([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/; 
var result = regexp.test($("#email").val()); // returns true 

이유는 무엇입니까

동안되었다 ??

답변

4

RegExp 생성자 함수를 사용하면 \을 이스케이프 처리해야합니다.

new RegExp("([\\w\\.-]+)@((?:[\\w]+\\.)+)([a-zA-Z]{2,4})"); 

생성자 함수를 사용하여

은 (문자열에 포함 된 경우 \ 특수 문자를 선행하는) 일반 문자열 회피 규칙이 필요하다, MDN's RegExp constructor Docs에서 인용. 예를 들어, 다음은 동일합니다.

var re = /\w+/; 
var re = new RegExp("\\w+"); 
관련 문제