[英]javascript string.replace against negative list
我知道在處理正則表達式時最好使用白名單,但由於客戶要求,我不能這樣做。 他們不希望我們阻止用戶輸入特殊字符 - 我們需要允許他們輸入特殊字符,然后在保存之前將其刪除。
所以說我有這樣的事情:
$('#clickMe').click(function() {
var test = $('#pizza').val();
var pattern = /[a-z][0-9]/;
if (!pattern.test(test)) {
console.log("not pass: " + test);
}
else {
console.log("passes");
}
})
如何執行string.replace()
並替換test
中不在模式中的任何字符?
ETA:這是一個小提琴 ; 如果您在輸入字段中輸入類似Esther (test*&^) pizza
的內容,我希望它返回Esther test pizza
。
像這樣定義你的正則表達式:
var test = $('#pizza').val();
var pattern = /[^\w\s]+/g;
if (pattern.test(test)) {
console.log("not pass: " + test);
var cleanVal = test.replace(pattern, '');
// set cleanVal to wherever you want
$('#pizza').val(cleanVal);
}
else {
console.log("passes");
}
我認為正確的模式是/[a-z0-9]/
,而不是/[az][0-9]/
。
最好的解決方案是涉及改變一點表達式:
var cleanString = test.replace(/[^a-z0-9]/g,'');
如果你不能,那么你可以這樣做:
var cleanString = test.match(/[a-z0-9]/g).join('');
如果您想刪除不需要的字符
var test = test.replace(/[^a-z0-9]/gi, ""); //g means all, i means case insensitve
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.