2014-03-31 37 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+"); 
相關問題