2011-01-09 164 views
3

我想用jQuery來驗證表單。JQuery - 刪除不匹配的字符regEx

這是在用戶的文本框中允許的模式。

var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g; 

如果用戶鍵入除此以外的任何內容,則必須用「」替換。

$(document).ready(function() { 
    $('#iBox').blur(function() { 
    var jVal = $('#iBox').val(); 
    if(jVal.match(pattern)) { 
    alert("Valid"); 
    } else { 
    alert("New "+jVal.replace(!(pattern),"")); 
       } 
    }); 
    }); 
}); 

但是替換函數不能這樣工作。

回答

5

使用negated character class通過後立即寫^開幕括號:

/[^a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g 

這裏^有着特殊的含義,因此正常的不同意味着它在正則表達式(通常它匹配該行的開始)。

所以,你的更正後的代碼應該是這樣的:

var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g; 
// ... 
alert("New " + jVal.replace(pattern, "")); 

還要注意,調用replace實際上並沒有改變原來的字符串 - 它返回字符串的修改後的副本。如果要修改jVal的價值,你就需要重新分配給它:

jVal = jVal.replace(pattern, ""); 
+0

只是要清楚的提問者,你應該這樣做,則只需撥打'取代(的模式,「」)` - 的問題當然是通過布爾否定模式,它本質上是通過`false`來代替RegExp。 – 2011-01-09 21:53:41