Normal ifade kullanarak JavaScript'teki bir dizeden tüm noktalama işaretlerini nasıl kaldırabilirim?


152

Ben alfanümerik olmayan karakter herhangi bir tür bir dize varsa:

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

JavaScript'te noktalama işareti olmayan bir sürümünü nasıl edinebilirim:

"This is an example of a string with punctuation"

Yanıtlar:


211

Bir dizeden belirli noktalama işaretlerini kaldırmak istiyorsanız, büyük olasılıkla tam olarak istediğiniz şeyi kaldırmak en iyisi olacaktır.

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

Yukarıdakileri yapmak, dizeyi belirttiğiniz gibi döndürmez. Çılgın noktalama işaretlerini kaldırmaktan kalan fazladan alanı kaldırmak istiyorsanız, o zaman böyle bir şey yapmak isteyeceksiniz.

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

Tam örneğim:

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

Firebug konsolunda çalışan kodun sonuçları:

alternatif metin


4
Normal ifadedeki kıvırcık ayraçlar, öncekine bir nicelleştirici uygular, bu nedenle bu durumda 2 ila 100 boşluk karakterini değiştirir (\s ) tek bir boşlukla değiştirir. Eğer bire düştü herhangi bir boşluk karakteri sayıda çökmeye isterseniz, şöyle üst sınır dışı bırakacaktı: replace(/\s{2,}/g, ' ').
Mike Partridge

13
Ben (değiştirilen noktalama listesine birkaç karakter ekledik @+?><[]+): replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, ''). Herkes henüz biraz daha eksiksiz bir set arıyorsa.
timmfin

9
Python'un string.punctuation noktalama işaretini şu şekilde tanımlar: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~Hangisi benim için daha iyi çalışıyor, bu yüzden başka bir alternatif:replace(/['!"#$%&\\'()\*+,\-\.\/:;<=>?@\[\\\]\^_`{|}~']/g,"");
01AutoMonkey

1
@ AntoineLizée Yanıltıcı olduğuna katılıyorum. Yanıt güncellendi. Teşekkürler.
Mike Grace

2
Ben denedim "o?" - benim için çalışmıyor ( regex101.com/r/F4j5Qc/1 ), doğru çözüm: /[.,\/#!$%\^&*;:{ {=\-_ `~ () \?] / g
Maxim Firsoff

129
str = str.replace(/[^\w\s]|_/g, "")
         .replace(/\s+/g, " ");

Alfasayısal karakterler ve boşluk hariç her şeyi kaldırır, ardından birden çok bitişik karakteri tek boşluklara daraltır.

Detaylı açıklama:

  1. \w herhangi bir rakam, harf veya alt çizgi.
  2. \s herhangi bir boşluk.
  3. [^\w\s] rakam, harf, boşluk veya alt çizgi olmayan herhangi bir şeydir.
  4. [^\w\s]|_ , arkaya eklenen alt çizgiler hariç # 3 ile aynıdır.

72
Bu aynı zamanda İngilizce olmayan ama başka türlü mükemmel phan, é, ö gibi alfanümerik karakterlerin yanı sıra Kiril alfabesinin tamamını da siler.
Dan Abramov

5
@quemeful Katılıyorum, orijinal soru "sadece ingilizce" belirtmez. SO oldukça uluslararası, tüm dünyada kullanılmaktadır. İngilizce bilen ve internet erişimi olan herkes kullanabilir. Soruda dil belirtilmemişse, herhangi bir varsayımda bulunmamalıyız. 2017'deyiz, kahretsin!
Rolf

1
Ayrıca, sadece İngilizce'yi destekleseniz bile, özgeçmiş ve yer ya da insanların adları gibi kredi sözcükleriniz vardır, bu yüzden birinin Ramón Chloé arasındaki kabinde San José'de (resmi yazım) çalıştığını söyleme yeteneğini kırmak istemezsiniz.
Chris Adams

Bu, wouldn'tve gibi kelimelerle don't
Charlie

71

US-ASCII için standart noktalama işaretleri: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Unicode noktalama işaretleri (kıvırcık tırnak işaretleri, kısa çizgiler vb.) İçin belirli blok aralıklarında kolayca eşleştirebilirsiniz. Genel Noktalama bloktur \u2000-\u206Fve Ek Noktalama bloktur\u2E00-\u2E7F .

Bir araya getirin ve düzgün bir şekilde kaçtıysanız, aşağıdaki RegExp'i elde edersiniz:

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

Bu, karşılaştığınız noktalama işaretleriyle hemen hemen eşleşmelidir. Orijinal soruyu cevaplamak için:

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 kaynağı: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#posix

Unicode kaynağı: http://kourge.net/projects/regexp-unicode-block


3
Unicode noktalama işaretleri için bloklar yeterli değildir. Genel noktalama işaretine bakmanız gerekir ve noktalama işaretlerinin hepsinin bu bloklarda iyi bir şekilde bulunmadığını göreceksiniz. Örneğin, Latin blokları içinde birçok tanıdık noktalama işareti vardır.
nhahtdh

15

/ [^ A-Za-z0-9 \ s] / g tüm noktalama işaretleriyle eşleşmeli, ancak boşluk bırakılmalıdır. Böylece, .replace(/\s{2,}/g, " ")gerekirse ekstra boşlukları değiştirmek için kullanabilirsiniz . Normal ifadeyi http://rubular.com/ adresinde test edebilirsiniz.

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

Güncelleme : Yalnızca giriş ANSI İngilizce ise çalışır.


6
Dizenin ANSI İngilizce olduğunu varsayıyorsunuz. Aksanlı harflerle (àéô) Fransızca veya Almanca, Türkçe değil. Unicode Arapça, Çince vb. De kaybolacaktır.
Rolf

2
Teşekkürler, bunu tamamen düşünmedim.
adnan2nd

10

Aynı sorunla karşılaştım, bu çözüm hile yaptı ve çok okunabilirdi:

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

Sonuç:

"This is an example of a string with punctuation"

İşin püf noktası, olumsuzlanan bir küme oluşturmaktı . O set ie içindeki olmayan her şeyi eşleştiğini Bu araçlar [^abc]değil - a, b ya da c

\Wherhangi bir kelime olmayan, bu nedenle [^\W]+bir kelime char olmayan her şeyi reddeder .

_ (Alt çizgi) ekleyerek bunu da reddedebilirsiniz.

Genel olarak uygulanmasını sağlayın /g, ardından herhangi bir dizeyi çalıştırabilir ve noktalama işaretlerini temizleyebilirsiniz:

/[^_\W]+/g

Güzel ve temiz;)


1
Bu yöntemle tüm yeni satırları uzaya da değiştirebilirsiniz.
nhahtdh

5
Bu yöntem yalnızca İngilizce olarak çalışır, aksanlı tüm karakterler kaldırılır.
NicolasBernier

@NicolasBernier evet bu% 100 doğru - JavaScript'in normal ifade motoru aslında oldukça topal (bkz: stackoverflow.com/questions/4043307/… ) - ne yazık ki daha karmaşık görevler için (ve İngilizce olmayan kelimeler için desenler oluşturmak için) daha fazla kod. Yine de, noktalama işaretlerini
şeritlemek

Bu en basit ve amacım iyi hizmet.
James Shrum

9

Diğerleri için buraya koyacağım.

Tüm diller için tüm noktalama işaretlerini eşleştir:

Unicode noktalama işaretlerinden oluşturulmuş $ve parantez ve parantez gibi bazı ortak klavye simgeleri eklenmiştir.\-=_

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

temel değiştirin:

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

boşluk olarak eklendi

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

noktalama işaretiyle eşleşmemek için kalıpları tersine çevirerek ^ ekledi

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

İbranice gibi bir dil için belki de tek ve çift alıntıyı kaldırmak ve daha fazla düşünmek.

bu komut dosyasını kullanarak:

Adım 1: Firefox holding'de U + 1234 numaralarının bir sütununu kontrol edip kopyalayın, kopyalayın, U + 12456'yı kopyalamayın.

adım 2 (kromda yaptım) bazı textarea bulun ve içine yapıştırın sonra sağ tıklayın ve incelemek tıklayın. seçilen öğeye $ 0 ile erişebilirsiniz.

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

3. adım, biri tek tek karakter ekleyebilir veya kaldırabilir çünkü ascii ilk harflerin üzerine ayrı karakter aralığı olarak kopyalanmaz


7

Unicode tanıyan bir dilde, Unicode Noktalama İşaretleri karakter özelliği \p{P}- genellikle kısaltabileceğiniz \pPve bazen\p{Punctuation} okunabilirlik için .

Perl Uyumlu Düzenli İfade kütüphanesi mi kullanıyorsunuz?


8
Ne yazık ki JS Perl uyumlu değil. Diğer sorun, bunu test ettiğimde, @ Quentin'in test dizesindeki tüm noktalama işaretlerini yakalamadı => mikegrace.s3.amazonaws.com/forums/stack-overflow/…
Mike Grace

4
Bu genişletilmiş sözdizimini almak için XRegExp kitaplığını kullanabilirsiniz.
Eirik Birkeland

7

Noktalama işaretlerini herhangi bir dizeden kaldırmak istiyorsanız, P Unicode sınıfını .

Ancak, sınıflar JavaScript RegEx'te kabul edilmediğinden, tüm noktalama işaretleriyle eşleşmesi gereken bu RegEx'i deneyebilirsiniz. Aşağıdaki kategorilerle eşleşir: Pc Pd Pe Pf Pi Po Ps Sc Sk Sm Genel GeneralPunctuation SupplementalPunctuation CJKSymbolsAndPunctuation Çivi yazısıNumbersAndPunctuation.

Özellikle JavaScript için Düzenli İfadeler üreten bu çevrimiçi aracı kullanarak oluşturdum . Hedefinize ulaşmak için kod budur:

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)


5

ABD (Amerikan İngilizcesi) dizeleri için bu yeterli olmalıdır:

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

UTF-8'i ve çince / rusça ve hepsi gibi karakterleri desteklerseniz, bunların da değiştirileceğini unutmayın, bu yüzden gerçekten ne istediğinizi belirtmeniz gerekir.


3

eğer lodash kullanıyorsanız

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

Bu Örnek

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

2

Gereğince noktalanmaların Wikipedia'nın listesinde ben noktalama işareti algılar aşağıdaki regex inşa etmek zorunda:

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


2
Bu normal ifade kullanıyorsanız, normal ifade sınırlayıcınızdan da kaçmalısınız. Örneğin, /(en yaygın olanı) kullanırsanız, yukarıdaki gibi bir ters eğik çizgi ekleyerek yukarıdaki karakter sınıfının içinden kaçılmalıdır \/. Bu Kullanmaya görecektir: "String!! With, Punctuation.".replace(/[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";\/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]+/g,""). Bu arada, oradaki hiçbir yerde gergiyi (`) görmüyorum, nasıl olur?
Rolf

kayıp. Tüm noktalama işaretlerinin listesini bulmak zor görünüyor.
Alex

1

Yalnızca alfabe ve boşlukları korumak istiyorsanız, şunları yapabilirsiniz:

str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')

8
Bu noktalama işaretlerinden başka bir şey yapmaz mı? Unicode ve benzerleri?
Alex

3
"Sadece İngilizce alfabe ve uzaylar" demek istediniz
Rolf

0

Ne döndürmeye çalıştığınıza bağlıdır. Bunu son zamanlarda kullandım:

return text.match(/[a-z]/i);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.