我想将下面的字符串转换为提供的输出。

Input:  "\\test\red\bob\fred\new"
Output: "testredbobfrednew"

我还没有找到任何解决方案,将处理特殊字符,如\r, \n, \b等。

基本上我只是想去掉所有不是字母数字的东西。以下是我尝试过的方法……

Attempt 1: "\\test\red\bob\fred\new".replace(/[_\W]+/g, "");
Output 1:  "testedobredew"

Attempt 2: "\\test\red\bob\fred\new".replace(/['`~!@#$%^&*()_|+-=?;:'",.<>\{\}\[\]\\\/]/gi, "");
Output 2:  "testedobred [newline] ew"

Attempt 3: "\\test\red\bob\fred\new".replace(/[^a-zA-Z0-9]/, "");
Output 3:  "testedobred [newline] ew"

Attempt 4: "\\test\red\bob\fred\new".replace(/[^a-z0-9\s]/gi, '');
Output 4:  "testedobred [newline] ew"

另一次尝试有多个步骤

function cleanID(id) {
    id = id.toUpperCase();
    id = id.replace( /\t/ , "T");
    id = id.replace( /\n/ , "N");
    id = id.replace( /\r/ , "R");
    id = id.replace( /\b/ , "B");
    id = id.replace( /\f/ , "F");
    return id.replace( /[^a-zA-Z0-9]/ , "");
}

结果

Attempt 1: cleanID("\\test\red\bob\fred\new");
Output 1: "BTESTREDOBFREDNEW"

任何帮助都将不胜感激。

工作方案:

Final Attempt 1: return JSON.stringify("\\test\red\bob\fred\new").replace( /\W/g , '');
Output 1: "testredbobfrednew"

当前回答

这里有一个你可以用的例子,

function removeNonAlphaNumeric(str){
    return str.replace(/[\W_]/g,"");
}

removeNonAlphaNumeric("0_0 (: /-\ :) 0-0");

其他回答

你可以试试这个正则表达式:

value.replace(/[\W_]/g, '');

这里有一个你可以用的例子,

function removeNonAlphaNumeric(str){
    return str.replace(/[\W_]/g,"");
}

removeNonAlphaNumeric("0_0 (: /-\ :) 0-0");

如果你想要这个\\test\red\bob\fred\new字符串,你应该转义所有的反斜杠(\)。当你写\\test\\red\\bob\\fred\\new时,你的字符串实际上只包含一个反斜杠。你可以确定这将打印你的字符串。 因此,如果字符串中的反斜杠被转义,myString.replace(/\W/g, ")将正常工作。

要包含阿拉伯字母和英语字母,你可以使用:

// Output: نصعربي
"ن$%^&*(ص ع___ربي".replace(/[^0-9a-z\u0600-\u06FF]/gi, '');

您可以使用\p{L}或\p{Letter}查找来自任何语言的字母,使用\d查找数字。

str.replace(/[^\p{L}\d]/gu, '')

^否定字符集:不是\P{L},也不是\d

国旗:

G(全局)执行尽可能多的替换 u (unicode)来识别unicode转义序列(如\p{L})。

例子: 函数removenonalphannumeric (str) { 返回str.replace(/[^\p{L}\d]/gu, ") } 序列= [ “asde5kfjdk ?”, “uQjoFß^ß我霁的美元, '无论3如何?!”, 的ф@ #ево1 ' ] 对于(seq of sequences) { console.log (removeNonAlphaNumeric (seq)) }