簡體   English   中英

javascript string.replace反對否定列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM