Normal İfade: Harf veya rakam olmayan herhangi bir karakter


113

Harf veya sayı olmayan herhangi bir karakterle eşleşen normal ifadeyi bulmaya çalışıyorum. Yani (,, @, £, () vb. Gibi karakterler ...

Bulduktan sonra onu boş bir alanla değiştirmek istiyorum.

Herhangi bir tavsiye.

Yanıtlar:


165

Harf veya sayı dışındaki herhangi bir şeyi eşleştirmek için şunu deneyebilirsiniz:

[^a-zA-Z0-9]

Ve değiştirmek için:

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\wWord karakterleri içindir ve tam olarak aynıdır [a-zA-Z0-9_](alt çizginin bir kelime karakteri olarak kabul edildiğine dikkat edin.) ... yani kısaltma şöyle olacaktırstr.replace(/[^\w]/g, ' ')
Joel Mellon

ancak birçok unicode harf de içerecektir! unicode harfleri hariç tutmanın bir yolu var mı?
Clite Tailor

1
Unicode karakterleri eklemek için [^ \ p {L} 0-9] kullanabilirsiniz
Dave

@Dave: Görünüşe göre, 2018 itibariyle bir çoklu dolgu olmadan yapamazsınız ... stackoverflow.com/questions/280712/javascript-unicode-regexes
Nickolay

Bir boşlukla değiştirmek yerine "\" ile ve ardından tanımlanan karakterle değiştirmenin bir yolu var mı? Bunun gibi: bu dfj, dsf7lfsd .sdklfj'yi bu dfj \, dsf7lfsd \ .sdklfj?
CrazySpy

39

Bu normal ifade, harf, rakam veya alt çizgi ( _) karakteri olmayan herhangi bir şeyle eşleşir .

\W

Örneğin JavaScript'te:

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

Rakam veya harf
dışındaki

@sbmaxx &, (,) Bu karakterler dışındaki tüm karakterleri değiştirmek istiyorum. bu koşulu mevcut normal ifadeye nasıl ekleyebilirim.
K Pal

17

Aradığınız:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

Bu, alfanümerik olmayan tüm karakterleri bir boşlukla değiştirir.

Sondaki "g", tüm oluşumların yerini alır.

Bunun yerine az'yi (küçük) ve AZ (büyük harf) belirtme da kullanabilirsiniz in-küçük harfe duyarlı seçeneği: /[^a-z0-9]/gi.


Boşluklarla da eşleşecek mi? Tutulacak yerlere ihtiyacım var. Teşekkürler.
James Jeffery

Boşluk karakterleri eşleşecek, ancak daha sonra boşluk karakterleri ile değiştirilecektir, bu nedenle aslında onları yalnız bırakacaktır (boşluk, boşluk olarak kalacaktır).
jimbo


5

str.replace yapmayı deneyin (/ [^ \ w] /); Dizinizdeki tüm alfabe dışı ve sayıların yerini alacak!

Düzenleme 1: str.replace(/[^\w]/g, ' ')


2
İşe yarayan bir cevap olacaktır str.replace(/[^\w]/g, ' '). Eğer /gbayrak eklemezseniz, sadece ilk geçtiği yerin yerini alacaktır. Ve bir değiştirme dizesi tanımlamazsanız, burada bir boşluk ' ', undefinedher yerde ile değiştirilecektir. Son olarak, eşleştikleri için alt çizgiler değiştirilmeyecektir \w. Bu cevap mükemmel bir cevap değil.
Julien Lirochon

4
  • Yalnızca harfleri eşleştirin /[A-Z]/ig
  • Harflerle değil herhangi bir şeyi eşleştirin /[^A-Z]/ig
  • Yalnızca maç numarası /[0-9]/gveya/\d+/g
  • Sayı olmayan herhangi bir şeyi eşleştirin /[^0-9]/gveya/\D+/g
  • Sayı veya harf olmayan herhangi bir şeyi eşleştirin /[^A-Z0-9]/ig

Başka olası desenler var


3

Sadece başkalarının görmesi için:

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

harf olmayan ve sayı olmayan tüm unicode karakterleri kaldırır.

Kaynak


İki olumlu oyun nereden geldiğinden emin değilim, ancak JavaScript'te (bu soru bununla ilgili) yok replaceAllve \p{..}özellik kaçışları geniş çapta uygulanmıyor.
Nickolay

2

Denediniz mi str = str.replace(/\W|_/g,'');, herhangi bir karakter içermeyen bir dize döndürecektir ve boru çubuğundan sonra |onları yakalamak için özel bir karakter olup olmadığını da belirtebilirsiniz .

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); geri dönecek str = 1324567890abcJohnDoe

veya rakamları ve harfleri arayın ve boş dizeyle ("") değiştirin:

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); geri dönecek str = '§$)% #$@';


1

Harf veya sayı veya harf dışında herhangi bir şeyi aksan işaretleriyle eşleştirmek için şunu édeneyebilirsiniz:

[^\wÀ-úÀ-ÿ]

Ve değiştirmek için:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

Aksan işaretleri desteğiyle en üstteki gönderiden esinlenilmiştir

kaynak

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.