2010-09-23 35 views
1

我有這個功能,它將驗證一個電子郵件地址。 jsLint給正則表達式帶來錯誤,抱怨一些字符未被轉義。如何轉義此正則表達式中的字符?

有沒有辦法正確地轉義它們?

var validateEmail = function(elementValue){ 
    var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 
    return emailPattern.test(elementValue); 
}; 
+0

這已被回答,但作爲一個方面Rexex.Escape是一個方便的函數,用於在正則表達式中轉義特殊字符。 – TheCodeKing 2010-09-23 19:20:49

回答

7

您使用正則表達式是有效。但我想的JSLint抱怨在字符類中的-前失蹤的逃生標誌:

/^[a-zA-Z0-9._\-][email protected][a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}$/ 

逃離-字符類中,如果它不是在開始或字符類的末尾或者只需要如果它在兩個字符之間使用時不表示範圍。

這裏有一些例子,是有效的:

/[-xyz]/ // "-", "x", "y", "z" 
/[xyz-]/ // the same as above 
/[-]/  // "-" 
/[a-z-]/ // "a"-"z", "-" 
/[a-b-c]/ // "a"-"b", "-", "c" 
1

我沒有看到需要轉義立即什麼。你可能想爲你的Regex嘗試/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i。我只是將它修整了一下,並將+%添加到第一個字段。

相關問題