Bagaimana saya bisa menghapus semua tanda baca dari string dalam JavaScript menggunakan regex?

152

Jika saya memiliki string dengan semua jenis karakter non-alfanumerik di dalamnya:

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

Bagaimana cara saya mendapatkan versi no-punctuation dalam JavaScript:

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

Jawaban:

210

Jika Anda ingin menghapus tanda baca tertentu dari sebuah string, mungkin yang terbaik adalah menghapus secara persis apa yang Anda inginkan

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

Melakukan hal di atas masih tidak mengembalikan string seperti yang Anda tentukan. Jika Anda ingin menghapus spasi tambahan yang tersisa dari menghilangkan tanda baca gila, maka Anda akan ingin melakukan sesuatu seperti

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

Contoh lengkap saya:

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

Hasil menjalankan kode di konsol pembakar:

teks alternatif

Mike Grace
sumber
4
Kurung kurawal di regex menerapkan kuantifier ke sebelumnya, jadi dalam hal ini menggantikan antara 2 dan 100 karakter spasi putih ( \s) dengan satu spasi. Jika Anda ingin runtuh sejumlah karakter spasi ke satu, Anda akan meninggalkan dari batas atas seperti: replace(/\s{2,}/g, ' ').
Mike Partridge
13
Saya telah menambahkan karakter lebih sedikit untuk daftar tanda baca diganti ( @+?><[]+): replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, ''). Jika ada yang mencari set yang sedikit lebih lengkap.
timmfin
9
String.punctuation Python mendefinisikan tanda baca sebagai: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~Yang bekerja lebih baik bagi saya, jadi alternatif lain adalah:replace(/['!"#$%&\\'()\*+,\-\.\/:;<=>?@\[\\\]\^_`{|}~']/g,"");
01AutoMonkey
1
@ AntoineLizée Saya setuju bahwa itu menyesatkan. Diperbarui jawabannya. Terima kasih.
Mike Grace
2
Saya sudah mencoba dengan "itu?" - tidak berfungsi untuk saya ( regex101.com/r/F4j5Qc/1 ), solusi yang tepat adalah: /[.,\/#!$%\^&*;:{}=\-_ `~ () \?] / g
Maxim Firsoff
128
str = str.replace(/[^\w\s]|_/g, "")
         .replace(/\s+/g, " ");

Menghapus semuanya kecuali karakter alfanumerik dan spasi putih, lalu menciutkan beberapa karakter yang berdekatan ke spasi tunggal.

Penjelasan detail:

  1. \w adalah angka, huruf, atau garis bawah.
  2. \s adalah spasi apa saja.
  3. [^\w\s] adalah segala sesuatu yang bukan angka, huruf, spasi, atau garis bawah.
  4. [^\w\s]|_ sama dengan # 3 kecuali dengan garis bawah ditambahkan kembali.
John Kugelman
sumber
72
Ini juga akan menghapus karakter non-Inggris tetapi sebaliknya alfanumerik sempurna seperti à, é, ö, serta seluruh alfabet Cyrillic.
Dan Abramov
5
@ quemeful Saya tidak setuju, pertanyaan asli tidak menentukan "hanya untuk bahasa Inggris". SO cukup internasional, digunakan di seluruh dunia. Siapa pun yang berbicara bahasa Inggris dan memiliki akses internet dapat menggunakannya. Jika bahasa tidak ditentukan dalam pertanyaan, maka kita tidak boleh membuat asumsi apa pun. Kami berada di 2017, sial!
Rolf
1
Juga, bahkan jika Anda hanya mendukung bahasa Inggris, Anda memiliki kata-kata pinjaman seperti resume dan nama tempat atau orang sehingga Anda tidak ingin merusak kemampuan seseorang untuk mengatakan bahwa mereka bekerja di San José (ejaan resmi) di bilik antara Ramón Chloé.
Chris Adams
Ini akan mengacaukan kata-kata seperti wouldn'tdandon't
Charlie
71

Berikut adalah karakter tanda baca standar untuk US-ASCII: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Untuk tanda baca Unicode (seperti tanda kutip, em-strip, dll), Anda dapat dengan mudah mencocokkan pada rentang blok tertentu. The General Tanda baca blok \u2000-\u206F, dan Tambahan Tanda baca blok \u2E00-\u2E7F.

Disatukan, dan lolos dengan benar, Anda mendapatkan RegExp berikut:

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

Itu harus cocok dengan hampir semua tanda baca yang Anda temui. Jadi, untuk menjawab pertanyaan awal:

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"

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

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

Joseph
sumber
3
Untuk tanda baca Unicode, blok tidak cukup. Anda harus melihat Tanda baca kategori umum, dan Anda akan melihat bahwa tidak semua tanda baca berada di blok tersebut. Ada banyak tanda baca yang dikenal di dalam blok Latin, misalnya.
nhahtdh
15

/ [^ A-Za-z0-9 \ s] / g harus cocok dengan semua tanda baca tetapi simpan spasinya. Jadi Anda dapat menggunakan .replace(/\s{2,}/g, " ")untuk mengganti ruang tambahan jika Anda perlu melakukannya. Anda dapat menguji regex di http://rubular.com/

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

Pembaruan : Hanya akan berfungsi jika inputnya adalah bahasa Inggris ANSI.

adnan2nd
sumber
6
Anda mengasumsikan bahwa string adalah ANSI Bahasa Inggris. Bukan bahasa Prancis dengan huruf beraksen (àéô), atau Jerman, Turki. Unicode Arab, Cina, dll. Juga akan hilang.
Rolf
2
Terima kasih, tidak memikirkan hal itu sepenuhnya.
adnan2nd
10

Saya mengalami masalah yang sama, solusi ini berhasil dan sangat mudah dibaca:

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

Hasil:

"This is an example of a string with punctuation"

Triknya adalah membuat set yang dinegasikan . Ini berarti cocok dengan apa pun yang tidak ada dalam himpunan yaitu [^abc]- bukan a, b atau c

\W bukan kata, jadi [^\W]+ akan meniadakan apa pun yang bukan kata char .

Dengan menambahkan _ (garis bawah) Anda dapat meniadakannya juga.

Buat itu berlaku secara global /g, maka Anda dapat menjalankan string apa pun melewatinya dan menghapus tanda baca:

/[^_\W]+/g

Bagus dan bersih;)

jacobedawson
sumber
1
Anda juga mengubah semua baris baru ke ruang angkasa dengan metode ini.
nhahtdh
5
Metode ini hanya berfungsi dalam bahasa Inggris, semua karakter beraksen dihapus.
NicolasBernier
@NicolasBernier ya itu 100% benar - mesin regex JavaScript sebenarnya cukup timpang (lihat: stackoverflow.com/questions/4043307/... ) - sayangnya untuk tugas yang lebih kompleks (dan untuk membuat pola untuk kata-kata non-Inggris) dibutuhkan sedikit adil lebih banyak kode. Namun, untuk regex cepat & singkat untuk menghilangkan tanda baca itu bekerja :)
jacobedawson
Ini adalah yang paling sederhana dan melayani tujuan saya dengan baik.
James Shrum
9

Saya hanya akan menaruhnya di sini untuk orang lain.

Cocokkan semua tanda baca untuk untuk semua bahasa:

Dibangun dari kategori tanda baca Unicode dan menambahkan beberapa simbol keyboard umum seperti $dan tanda kurung dan\-=_

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

ganti dasar:

".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"

ditambahkan sebagai ruang

".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)

menambahkan ^ untuk membalikkan patternt agar tidak cocok dengan tanda baca tetapi kata-kata yang ditampilkan

".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)

untuk bahasa seperti bahasa Ibrani mungkin untuk menghapus "" kutipan tunggal dan ganda, dan melakukan lebih banyak pemikiran tentang itu.

menggunakan skrip ini:

langkah 1: pilih di Firefox memegang kontrol kolom nomor U + 1234 dan salin, jangan menyalin U + 12456 mereka ganti bahasa Inggris

langkah 2 (saya lakukan di chrome) menemukan beberapa textarea dan rekatkan ke dalamnya kemudian klik kanan dan klik periksa. maka Anda dapat mengakses elemen yang dipilih dengan $ 0.

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("")

Langkah 3 disalin pada huruf pertama ascii sebagai karakter terpisah bukan rentang karena seseorang dapat menambah atau menghapus karakter individu

Shimon Doodkin
sumber
7

Dalam bahasa yang menyadari Unicode, properti karakter Tanda Baca Unicode adalah \p{P}- yang biasanya bisa Anda singkatan \pPdan terkadang diperluas menjadi\p{Punctuation} untuk dibaca.

Apakah Anda menggunakan pustaka Ekspresi Reguler Kompatibel Kompatibel Perl?

tchrist
sumber
8
Sayangnya JS tidak kompatibel dengan Perl. Masalah lainnya adalah ketika saya menguji ini tidak menangkap semua tanda baca dalam string uji @ Quentin => mikegrace.s3.amazonaws.com/forums/stack-overflow/…
Mike Grace
4
Anda bisa menggunakan pustaka XRegExp untuk mendapatkan sintaks yang diperluas ini.
Eirik Birkeland
7

Jika Anda ingin menghapus tanda baca dari string apa pun, Anda harus menggunakan Pkelas Unicode.

Tapi, karena kelas tidak diterima di JavaScript RegEx, Anda bisa mencoba RegEx ini yang harus cocok dengan semua tanda baca. Ini cocok dengan kategori berikut: Pc Pd Pe Pf Pi Po Sc Sc Sm Jadi Umum Tanda Baca Tambahan Tanda Baca CJKSimbol Simbol Dan Dan Tanda Baca CuneiformNomor dan Tanda Baca.

Saya membuatnya menggunakan alat online ini yang menghasilkan Ekspresi Reguler khusus untuk JavaScript. Itulah kode untuk mencapai tujuan Anda:

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
sumber
5

Untuk string en-US (Bahasa Inggris Amerika) ini sudah cukup:

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

Ketahuilah bahwa jika Anda mendukung UTF-8 dan karakter seperti Cina / Rusia dan semuanya, ini akan menggantikan mereka juga, jadi Anda benar-benar harus menentukan apa yang Anda inginkan.

meder omuraliev
sumber
3

jika Anda menggunakan lodash

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

Contoh ini

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

Sesuai daftar tanda baca Wikipedia saya harus membuat regex berikut yang mendeteksi tanda baca:

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

Tushar Goswami
sumber
2
Jika menggunakan regex ini, Anda juga harus menghindari pembatas regex Anda. Misalnya, jika Anda menggunakan /(paling umum) maka harus lolos dalam kelas karakter di atas dengan menambahkan back-slash sebelumnya, seperti ini: \/. Ini adalah bagaimana Anda akan menggunakannya: "String!! With, Punctuation.".replace(/[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";\/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]+/g,""). Omong-omong, saya tidak melihat backtick (`) di mana saja di sana, bagaimana bisa?
Rolf
hilang. Tampaknya sulit untuk menemukan daftar semua tanda baca.
Alex
1

Jika Anda ingin mempertahankan hanya huruf dan spasi, Anda dapat melakukan:

str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')
codaddict
sumber
8
Bukankah itu menarik lebih dari sekadar tanda baca? Unicode dan sejenisnya?
Alex
3
Maksud Anda "hanya huruf dan spasi Bahasa Inggris "
Rolf
0

Tergantung pada apa yang Anda coba untuk kembali. Saya menggunakan ini baru-baru ini:

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