爲什麼這會返回false而不是true。如何傳遞正則表達式作爲函數參數
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
爲什麼這會返回false而不是true。如何傳遞正則表達式作爲函數參數
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
無論正確格式化您的表情:
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);
斜槓(/
)不是表達式的一部分,它們表示正則表達式文字。如果使用包含該表達式的字符串,則必須省略它們並轉義每個反斜槓,因爲反斜槓也是字符串中的轉義字符。
因爲在使用new RegExp()
創建正則表達式時,不使用分隔符。從字符串前後刪除/
。
或者,通過刪除前後的引號來傳遞正則表達式本身,並省略new RegExp()
調用。
它不起作用,因爲'新的RegExp'不希望字符串預訂斜線;第一個和最後一個字符是文字正則表達式模式的一部分。 – apsillers