簡體   English   中英

Javascript正則表達式特殊字符

[英]Javascript regex special characters

我有一個要從字符串中刪除的特殊字符列表,該列表如下:(以空格分隔)

! % & \\ ' ( ) * + - . / ; < = > ? \\\\ , : # @ \\t \\r \\n " [] _

我試圖像這樣替換函數,但是遇到//\\t\\r\\n[]這樣的字符

var input = 'test ! % & \ ' ( ) * + - . / ; < = > ? \\ , : # @ \t \r \n " [] _ test';
input.replace(/[!%&\'()*+-./;<=>?\\,:#@\t\r\n"[]_][\u007B-\u00BF]/g, "");

有沒有更好的方法來正確執行此操作? 還是可能以某種方式將數組用作受限字符?

這是您可以使用的正則表達式:

 var input = 'test ! % & \\\\ \\' ( ) * + - . / ; < = > ? \\\\ , : # @ \\t \\r \\n " [] _ test'; alert(input.replace(/[!%&'()*+./;<=>?\\\\,/:#@\\t\\r\\n"\\[\\]_\{-\¿-]/g, "")); 

請注意,您需要在JS正則表達式字符類中轉義[] 連字符應放在最后或轉義。 另外,我想您也想刪除\{-\¿范圍內的字符,因此我將2個字符類“合並”為1個。

某些字符需要轉義 ,並帶有反斜杠。

這些字符是.^$*+?()[{\\|-

您還需要像使用js文字一樣對/進行轉義。

此外, [\{-\¿]帶有[\{-\¿]意味着它將僅匹配后面跟着這些字符之一的字符。 從您的問題尚不清楚這是否真的是您想要的。

因此,您的正則表達式應為:

input.replace(/[!%&'\(\)\*\+\-\.\/;<=>\?\\,:#@\t\r\n"\[\]_][\u007B-\u00BF]/g, "");

這是第一部分的示例

var re = /[a-z()!%$\\@<>=?\/.-;,#\[\]_\*\&\+\-\"]/g; 
var str = 'test ! % & \ \' ( ) * + - . / ; < = > ? \\ , : # @ \t \r \n " [] _ test';
var m;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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