Wie kann ich mit Regex alle Satzzeichen aus einer Zeichenfolge in JavaScript entfernen?

152

Wenn ich eine Zeichenfolge mit einem nicht alphanumerischen Zeichen habe:

"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"

Wie würde ich eine Version ohne Interpunktion in JavaScript erhalten:

"This is an example of a string with punctuation"
Quentin Fisk
quelle

Antworten:

210

Wenn Sie bestimmte Satzzeichen aus einer Zeichenfolge entfernen möchten, ist es wahrscheinlich am besten, genau das zu entfernen, was Sie möchten

replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"")

Wenn Sie dies tun, wird die Zeichenfolge immer noch nicht so zurückgegeben, wie Sie sie angegeben haben. Wenn Sie zusätzliche Leerzeichen entfernen möchten, die beim Entfernen verrückter Interpunktion übrig geblieben sind, sollten Sie so etwas tun

replace(/\s{2,}/g," ");

Mein vollständiges Beispiel:

var s = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var punctuationless = s.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
var finalString = punctuationless.replace(/\s{2,}/g," ");

Ergebnisse der Ausführung von Code in der Firebug-Konsole:

Alt-Text

Mike Grace
quelle
4
Geschweifte Klammern in Regex wenden einen Quantifizierer auf den vorhergehenden Wert an. In diesem Fall werden zwischen 2 und 100 Leerzeichen ( \s) durch ein einzelnes Leerzeichen ersetzt. Wenn Sie eine beliebige Anzahl von Leerzeichen auf eins reduzieren möchten, lassen Sie die Obergrenze wie folgt weg : replace(/\s{2,}/g, ' ').
Mike Partridge
13
Ich habe ein paar weitere Zeichen zur Liste der ersetzten Interpunktion hinzugefügt ( @+?><[]+) : replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, ''). Wenn jemand nach einem noch etwas vollständigeren Set sucht.
Timmfin
9
Pythons string.punctuation definiert Interpunktion als: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~Was für mich besser funktioniert, also wäre eine andere Alternative:replace(/['!"#$%&\\'()\*+,\-\.\/:;<=>?@\[\\\]\^_`{|}~']/g,"");
01AutoMonkey
1
@ AntoineLizée Ich stimme zu, dass es irreführend ist. Die Antwort wurde aktualisiert. Vielen Dank.
Mike Grace
2
Ich habe es mit "es?" - funktioniert bei mir nicht ( regex101.com/r/F4j5Qc/1 ), die richtige Lösung ist: \?] / g
Maxim Firsoff
128
str = str.replace(/[^\w\s]|_/g, "")
         .replace(/\s+/g, " ");

Entfernt alles außer alphanumerischen Zeichen und Leerzeichen und reduziert dann mehrere benachbarte Zeichen auf einzelne Leerzeichen.

Ausführliche Erklärung:

  1. \w ist eine beliebige Ziffer, ein Buchstabe oder ein Unterstrich.
  2. \s ist ein Leerzeichen.
  3. [^\w\s] ist alles, was keine Ziffer, kein Buchstabe, kein Leerzeichen oder kein Unterstrich ist.
  4. [^\w\s]|_ ist dasselbe wie # 3, außer dass die Unterstriche wieder hinzugefügt werden.
John Kugelman
quelle
72
Dadurch werden auch nicht englische, aber ansonsten perfekt alphanumerische Zeichen wie à, é, ö sowie das gesamte kyrillische Alphabet entfernt.
Dan Abramov
5
@quemeful Ich bin anderer Meinung, die ursprüngliche Frage gibt nicht "nur für Englisch" an. SO ist ziemlich international und wird auf der ganzen Welt eingesetzt. Jeder, der Englisch spricht und über einen Internetzugang verfügt, kann diesen nutzen. Wenn die Sprache in der Frage nicht angegeben ist, sollten wir keine Annahmen treffen. Wir sind im Jahr 2017, verdammt!
Rolf
1
Selbst wenn Sie nur Englisch unterstützen, haben Sie Lehnwörter wie Lebenslauf und Namen von Orten oder Personen, damit Sie nicht die Fähigkeit einer Person beeinträchtigen möchten, zu sagen, dass sie in San José (der offiziellen Schreibweise) in der Kabine zwischen Ramón Chloé arbeitet.
Chris Adams
Dies wird mit Wörtern wie wouldn'tunddon't
Charlie
71

Hier sind die Standard-Interpunktionszeichen für US-ASCII: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Bei Unicode-Interpunktion (z. B. geschweifte Anführungszeichen, Bindestriche usw.) können Sie bestimmte Blockbereiche problemlos abgleichen. Der allgemeine Interpunktionsblock ist \u2000-\u206Fund der ergänzende Interpunktionsblock ist \u2E00-\u2E7F.

Zusammengenommen und ordnungsgemäß entkommen, erhalten Sie das folgende RegExp:

/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/

Das sollte so ziemlich jeder Interpunktion entsprechen, auf die Sie stoßen. Um die ursprüngliche Frage zu beantworten:

var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
var spaceRE = /\s+/g;
var str = "This, -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
str.replace(punctRE, '').replace(spaceRE, ' ');

>> "This is an example of a string with punctuation"

US-ASCII-Quelle: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#posix

Unicode-Quelle: http://kourge.net/projects/regexp-unicode-block

Joseph
quelle
3
Für die Unicode-Interpunktion reichen die Blöcke nicht aus. Sie müssen sich die allgemeine Kategorie Interpunktion ansehen, und Sie werden feststellen, dass nicht alle Interpunktionen in diesen Blöcken gut platziert sind. Es gibt zum Beispiel viele bekannte Interpunktionen in lateinischen Blöcken.
nhahtdh
15

/ [^ A-Za-z0-9 \ s] / g sollte mit allen Satzzeichen übereinstimmen, aber die Leerzeichen behalten. Sie können also .replace(/\s{2,}/g, " ")zusätzliche Leerzeichen ersetzen, wenn Sie dies benötigen. Sie können den regulären Ausdruck unter http://rubular.com/ testen.

.replace(/[^A-Za-z0-9\s]/g,"").replace(/\s{2,}/g, " ")

Update : Funktioniert nur, wenn die Eingabe ANSI-Englisch ist.

adnan2nd
quelle
6
Sie gehen davon aus, dass die Zeichenfolge ANSI-Englisch ist. Weder Französisch mit Akzentbuchstaben (àéô) noch Deutsch, Türkisch. Unicode-Arabisch, Chinesisch usw. verschwinden ebenfalls.
Rolf
2
Danke, habe nicht ganz darüber nachgedacht.
adnan2nd
10

Ich bin auf dasselbe Problem gestoßen, diese Lösung hat es geschafft und war sehr gut lesbar:

var sentence = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var newSen = sentence.match(/[^_\W]+/g).join(' ');
console.log(newSen);

Ergebnis:

"This is an example of a string with punctuation"

Der Trick bestand darin, eine negierte Menge zu erstellen . Dies bedeutet, dass es mit allem übereinstimmt, was nicht innerhalb der Menge liegt, dh [^abc]nicht mit a, b oder c

\Wist ein Nicht-Wort, also [^\W]+wird alles negiert, was kein Wort char ist .

Durch Hinzufügen des _ (Unterstrichs) können Sie dies ebenfalls negieren.

Wenn Sie es global anwenden /g, können Sie eine beliebige Zeichenfolge durchlaufen und die Interpunktion löschen:

/[^_\W]+/g

Schön und sauber ;)

Jacobedawson
quelle
1
Mit dieser Methode können Sie auch alle neuen Zeilen in Leerzeichen ändern.
nhahtdh
5
Diese Methode funktioniert nur in Englisch, alle Zeichen mit Akzent werden entfernt.
NicolasBernier
@NicolasBernier Ja, das ist 100% richtig. Die Regex-Engine von JavaScript ist eigentlich ziemlich lahm (siehe: stackoverflow.com/questions/4043307/… ). Leider dauert es für komplexere Aufgaben (und zum Erstellen von Mustern für nicht englische Wörter) ein gutes Stück mehr Code. Trotzdem funktioniert es für eine schnelle und
präzise
Dies war das einfachste und hat meinen Zweck gut erfüllt.
James Shrum
9

Ich werde es nur für andere hier setzen.

Ordnen Sie alle Satzzeichen für alle Sprachen zu:

Erstellt aus der Unicode-Interpunktionskategorie und fügte einige gebräuchliche Tastatursymbole wie $und Klammern und hinzu\-=_

http://www.fileformat.info/info/unicode/category/Po/list.htm

Grundlegender Ersatz:

".test'da, te\"xt".replace(/[\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g,"")
"testda text"

\ s als Leerzeichen hinzugefügt

".da'fla, te\"te".split(/[\s\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g)

^ hinzugefügt, um das Muster so umzukehren, dass nicht die Interpunktion, sondern die Wörter selbst übereinstimmen

".test';the, te\"xt".match(/[^\s\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g)

für eine Sprache wie Hebräisch vielleicht, um das einfache und das doppelte Anführungszeichen zu entfernen und mehr darüber nachzudenken.

Verwenden dieses Skripts:

Schritt 1: Wählen Sie in Firefox Holding Control eine Spalte mit U + 1234-Nummern aus und kopieren Sie diese. Kopieren Sie nicht U + 12456, sie ersetzen Englisch

Schritt 2 (ich habe in Chrom) finden Sie einen Textbereich und fügen Sie ihn ein. Klicken Sie dann mit der rechten Maustaste und klicken Sie auf Inspizieren. dann können Sie mit $ 0 auf das ausgewählte Element zugreifen.

var x=$0.value
var z=x.replace(/U\+/g,"").split(/[\r\n]+/).map(function(a){return parseInt(a,16)})
var ret=[];z.forEach(function(a,k){if(z[k-1]===a-1 && z[k+1]===a+1) { if(ret[ret.length-1]!="-")ret.push("-");} else {  var c=a.toString(16); var prefix=c.length<3?"\\u0000":c.length<5?"\\u0000":"\\u000000"; var uu=prefix.substring(0,prefix.length-c.length)+c; ret.push(c.length<3?String.fromCharCode(a):uu)}});ret.join("")

Schritt 3 kopierte über die ersten Buchstaben die ASCII als separate Zeichen, nicht Bereiche, da jemand einzelne Zeichen hinzufügen oder entfernen könnte

Shimon Doodkin
quelle
7

In einer Unicode-fähigen Sprache lautet die Unicode- Interpunktion- Zeicheneigenschaft \p{P}- die Sie normalerweise zur besseren Lesbarkeit abkürzen \pPund manchmal erweitern können \p{Punctuation}.

Verwenden Sie eine Perl-kompatible Bibliothek für reguläre Ausdrücke?

tchrist
quelle
8
Leider ist JS nicht Perl-kompatibel. Das andere Problem ist, als ich dies getestet habe, wurde nicht die gesamte Interpunktion in @ Quentins Teststring erfasst
Mike Grace
4
Sie können die XRegExp-Bibliothek verwenden, um diese erweiterte Syntax abzurufen.
Eirik Birkeland
7

Wenn Sie Interpunktion aus einer Zeichenfolge entfernen möchten, sollten Sie die PUnicode-Klasse verwenden.

Da Klassen in JavaScript RegEx nicht akzeptiert werden, können Sie diese RegEx ausprobieren, die mit allen Satzzeichen übereinstimmen sollte. Es entspricht den folgenden Kategorien: Pc Pd Pe Pf Pi Po Ps Sc Sk Sm So Allgemeine Interpunktion SupplementalPunctuation CJKSymbolsAndPunctuation CuneiformNumbersAndPunctuation.

Ich habe es mit diesem Online-Tool erstellt , das reguläre Ausdrücke speziell für JavaScript generiert. Das ist der Code, um Ihr Ziel zu erreichen:

var punctuationRegEx = /[!-/:-@[-`{-~¡-©«-¬®-±´¶-¸»¿×÷˂-˅˒-˟˥-˫˭˯-˿͵;΄-΅·϶҂՚-՟։-֊־׀׃׆׳-״؆-؏؛؞-؟٪-٭۔۩۽-۾܀-܍߶-߹।-॥॰৲-৳৺૱୰௳-௺౿ೱ-ೲ൹෴฿๏๚-๛༁-༗༚-༟༴༶༸༺-༽྅྾-࿅࿇-࿌࿎-࿔၊-၏႞-႟჻፠-፨᎐-᎙᙭-᙮᚛-᚜᛫-᛭᜵-᜶។-៖៘-៛᠀-᠊᥀᥄-᥅᧞-᧿᨞-᨟᭚-᭪᭴-᭼᰻-᰿᱾-᱿᾽᾿-῁῍-῏῝-῟῭-`´-῾\u2000-\u206e⁺-⁾₊-₎₠-₵℀-℁℃-℆℈-℉℔№-℘℞-℣℥℧℩℮℺-℻⅀-⅄⅊-⅍⅏←-⏧␀-␦⑀-⑊⒜-ⓩ─-⚝⚠-⚼⛀-⛃✁-✄✆-✉✌-✧✩-❋❍❏-❒❖❘-❞❡-❵➔➘-➯➱-➾⟀-⟊⟌⟐-⭌⭐-⭔⳥-⳪⳹-⳼⳾-⳿⸀-\u2e7e⺀-⺙⺛-⻳⼀-⿕⿰-⿻\u3000-〿゛-゜゠・㆐-㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉃㉐㉠-㉿㊊-㊰㋀-㋾㌀-㏿䷀-䷿꒐-꓆꘍-꘏꙳꙾꜀-꜖꜠-꜡꞉-꞊꠨-꠫꡴-꡷꣎-꣏꤮-꤯꥟꩜-꩟﬩﴾-﴿﷼-﷽︐-︙︰-﹒﹔-﹦﹨-﹫!-/:-@[-`{-・¢-₩│-○-�]|\ud800[\udd00-\udd02\udd37-\udd3f\udd79-\udd89\udd90-\udd9b\uddd0-\uddfc\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83-\udd84\udd8c-\udda9\uddae-\udddd\ude00-\ude41\ude45\udf00-\udf56]|\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud83c[\udc00-\udc2b\udc30-\udc93]/g;
var string = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var newString = string.replace(punctuationRegEx, '').replace(/(\s){2,}/g, '$1');
console.log(newString)

Salvatore
quelle
5

Für en-US-Zeichenfolgen (American English) sollte dies ausreichen:

"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation".replace( /[^a-zA-Z ]/g, '').replace( /\s\s+/g, ' ' )

Beachten Sie, dass wenn Sie UTF-8 und Zeichen wie Chinesisch / Russisch und alle unterstützen, diese ebenfalls ersetzt werden, sodass Sie wirklich angeben müssen, was Sie möchten.

meder omuraliev
quelle
3

wenn Sie lodash verwenden

_.words('This, is : my - test,line:').join(' ')

Dieses Beispiel

_.words('"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"').join(' ')
Pankaj Avhad
quelle
2

Gemäß der Wikipedia-Liste der Interpunktionen musste ich den folgenden regulären Ausdruck erstellen, der Interpunktionen erkennt:

[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]

Tushar Goswami
quelle
2
Wenn Sie diesen regulären Ausdruck verwenden, sollten Sie auch Ihren regulären Ausdruck trennen. Wenn Sie beispielsweise /(am häufigsten) verwenden, sollte es innerhalb der obigen Zeichenklasse maskiert werden, indem Sie zuvor einen Schrägstrich wie folgt hinzufügen : \/. So würden Sie es verwenden : "String!! With, Punctuation.".replace(/[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";\/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]+/g,""). Übrigens sehe ich den Backtick (`) nirgendwo dort, wie kommt es?
Rolf
wird vermisst. Es scheint schwierig zu sein, eine Liste aller Interpunktionen zu finden.
Alex
1

Wenn Sie nur Alphabete und Leerzeichen beibehalten möchten, haben Sie folgende Möglichkeiten:

str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')
Codaddict
quelle
8
Wird das nicht mehr als nur Interpunktion sein? Unicode und dergleichen?
Alex
3
Du meinst "nur englische Alphabete und Leerzeichen"
Rolf
0

Es hängt davon ab, was Sie zurückgeben möchten. Ich habe das kürzlich benutzt:

return text.match(/[a-z]/i);
Amanda Koster
quelle