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.