2012-06-21 51 views

回答

11

無論正確格式化您的表情:

function doit(expression) { 
    var regex = new RegExp(expression, 'g'); 
    alert(regex.test('[email protected]')); 
} 

doit("^\\w+([-+.\\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 
// no/here, escape \ 

或通過直接表達:

function doit(expression) { 
    alert(expression.test('[email protected]')); 
} 

doit(/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g); 


斜槓(/)不是表達式的一部分,它們表示正則表達式文字。如果使用包含該表達式的字符串,則必須省略它們並轉義每個反斜槓,因爲反斜槓也是字符串中的轉義字符。

+2

由於反斜槓是字符串中的轉義字符,因此您需要轉義所有反斜槓,例如'\\ w'而不是'\ w'。如果你只是提供了一個實際的RegExp對象而不是一個字符串,那麼你會得到更簡潔的代碼,就像這個答案中的第二個選項。 – apsillers

+0

@RegisteredUser:當你在一個字符串反斜線,你必須轉義:http://jsfiddle.net/Guffa/hAV8Q/4/ – Guffa

+0

對,我忘了逃避反斜槓...這就是爲什麼我避免使用正則表達式作爲字符串;) –

2

因爲在使用new RegExp()創建正則表達式時,不使用分隔符。從字符串前後刪除/

或者,通過刪除前後的引號來傳遞正則表達式本身,並省略new RegExp()調用。

相關問題