Entfernen Sie keine alphanumerischen Zeichen aus der Zeichenfolge. Probleme mit dem Zeichen haben

Ich möchte die folgende Zeichenfolge in die bereitgestellte Ausgabe konvertieren.

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

Ich habe keine Lösung gefunden, die Sonderzeichen wie \r , \n , \b usw. verarbeiten kann.

Im Grunde möchte ich nur alles loswerden, was nicht alphanumerisch ist. Hier ist, was ich versucht habe …

 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" 

Ein weiterer Versuch mit mehreren Schritten

 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]/ , ""); } 

mit Ergebnissen

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

Jede Hilfe wäre willkommen.

Arbeitslösung:

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

Solutions Collecting From Web of "Entfernen Sie keine alphanumerischen Zeichen aus der Zeichenfolge. Probleme mit dem Zeichen haben"

Entfernen von nicht-alphanumerischen Zeichen

Das Folgende ist die / a korrekte Regex, um nicht-alphanumerische Zeichen aus einer Eingabezeichenfolge zu entfernen:

 input.replace(/\W/g, '') 

Beachten Sie, dass \W das Äquivalent von [^0-9a-zA-Z_] – es enthält den Unterstrich. Um Unterstriche zu entfernen, verwenden Sie zB:

 input.replace(/[^0-9a-z]/gi, '') 

Die Eingabe ist errorshaft

Da die Testzeichenfolge verschiedene Zeichen enthält, die nicht alphanumerisch sind, werden sie entfernt.

Ein umgekehrter Schrägstrich in der Zeichenfolge muss entfernt werden, wenn er wörtlich genommen werden soll:

 "\\test\\red\\bob\\fred\\new".replace(/\W/g, '') "testredbobfrednew" // output 

Umgang mit errorshaften Strings

Wenn Sie die Eingabezeichenfolge nicht korrekt umgehen können (warum nicht?) Oder aus einer nicht vertrauenswürdigen / falsch konfigurierten Quelle stammt, können Sie Folgendes tun:

 JSON.stringify("\\test\red\bob\fred\new").replace(/\W/g, '') "testredbobfrednew" // output 

Beachten Sie, dass die JSON-Darstellung einer Zeichenfolge die Anführungszeichen enthält:

 JSON.stringify("\\test\red\bob\fred\new") ""\\test\red\bob\fred\new"" 

Sie werden aber auch durch den Ersatzregex entfernt.

Alle aktuellen Antworten haben immer noch Macken, das Beste, was ich mir vorstellen konnte, war:

 string.replace(/[^A-Za-z0-9]/g, ''); 

Hier ein Beispiel, das alle Schlüssel erfasst, die ich auf der Tastatur finden konnte:

 var string = '123abcABC-_*(!@#$%^&*()_-={}[]:\"<>,.?/~`'; var stripped = string.replace(/[^A-Za-z0-9]/g, ''); console.log(stripped); 

Ausgaben: ‘123abcABC’

Das Problem besteht nicht darin, wie Sie die Zeichen ersetzen, das Problem besteht darin, wie Sie die Zeichenfolge eingeben.

Es ist nur der erste umgekehrte Schrägstrich in der Eingabe, der ein Backslash-Zeichen ist, die anderen sind Teil der Steuerzeichen \r , \b , \f und \n .

Da diese Backslashes keine separaten Zeichen sind, sondern Teil der Schreibweise eines einzelnen Steuerzeichens sind, können sie nicht separat entfernt werden. Dh Sie können den umgekehrten Schrägstrich nicht aus \n entfernen, da es sich nicht um zwei separate Zeichen handelt, sondern um das Steuerzeichen LF oder Zeilenvorschub .

Wenn Sie diese Eingabe tatsächlich in die gewünschte Ausgabe umwandeln möchten, müssen Sie jedes Steuerzeichen durch den entsprechenden Buchstaben ersetzen, z. B. das Zeichen \n durch das Zeichen n ersetzen.

Um ein Steuerzeichen zu ersetzen, müssen Sie einen Zeichensatz wie [\r] , da \r in einem regulären Ausdruck eine besondere Bedeutung hat:

 var input = "\\test\red\bob\fred\new"; var output = input .replace(/[\r]/g, 'r') .replace(/[\b]/g, 'b') .replace(/[\f]/g, 'f') .replace(/[\n]/g, 'n') .replace(/\\/g, ''); 

Demo: http://jsfiddle.net/SAp4W/

Sie können diese Regex versuchen:

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

Dadurch werden alle nicht alphanumerischen Zeichen entfernt, die Groß- / Kleinschreibung wird beibehalten und Leerzeichen zwischen Wörtern werden beibehalten.

 function alpha_numeric_filter (string) { const alpha_numeric = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + ' ') let filterd_string = '' for (let i = 0; i < string.length; i++) { let char = string[i] let index = alpha_numeric.indexOf(char) if (index > -1) { filterd_string += alpha_numeric[index] } } return filterd_string } let input = '\\\\test\\red\\bob\\fred\\new' console.log(alpha_numeric_filter(input)) //=> testredbobfrednew let string = '/_&_This!&!! is!@#$% a%^&*() Sentence+=-[]{} 123:;\|\\]||~`/.,>< ' console.log(alpha_numeric_filter(string)) //=> This is a Sentence 

Wenn Sie diese \\test\red\bob\fred\new Zeichenfolge haben möchten, sollten Sie alle Backslashes ( \ ) umgehen. Wenn Sie \\test\\red\\bob\\fred\\new schreiben, enthält Ihre Zeichenfolge tatsächlich einzelne umgekehrte Schrägstriche. Sie können sicher sein, dass Sie Ihre Zeichenfolge ausdrucken.
Wenn myString.replace(/\W/g,'') Schrägstriche in der Zeichenkette myString.replace(/\W/g,'') sind, myString.replace(/\W/g,'') normal.