Yalnızca alfabetik karakterlerle eşleşecek Normal İfade


157

Ben sadece alfabetik karakterler ve bu yalnız bir dize eşleşecek düzenli bir ifade alabilir miyim merak ediyordum.


2
/ ^ [A-zA-Z] + $ / gibi bir şey çalışmalıdır.
— Julian Go

10
Mı àbir alfabetik karakter tanımlarınıza göre? Hangi dili kullanıyorsun
— Tim Pietzcker

2
boş bir dize eşleşmeli mi?
— ysth

boş bir dize eşleşmemeli
— Steffan Harris

Önemli bir not: sorduğunuz normal ifadeyi kullanmak istediğiniz bir dile veya araca başvurmadınız. Normal ifadelerin ilkeleri evrensel olarak aynı olsa da, sözdizimi her yerde eşit değildir. Nerede kullanmak istediğinizi belirtmelisiniz.
— sergiol

Yanıtlar:


186

Bu 2 varyanttan herhangi birini kullanabilirsiniz:

/^[A-Z]+$/i
/^[A-Za-z]+$/

ASCII alfabe giriş dizesiyle eşleştirmek için.

  • [A-Za-z] tüm alfabe ile eşleşir (hem küçük hem de büyük harf).
  • ^ve $bu alfabe dışında hiçbir şeyin eşleşmeyeceğinden emin olacaksınız.

Kod:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);

Çıktı:

array(0) {
}

Test durumu , yalnızca girişte 1 veya daha fazla alfabe varsa eşleştirmek istediği yorumu içindir . Test durumunda gördüğünüz ^gibi, giriş dizesinde olduğundan eşleşme başarısız oldu abcAbc^Xyz.

Not: Yukarıdaki cevabın sadece ASCII alfabe ile ve Unicode karakterlerle eşleşmediğini lütfen unutmayın . Unicode harfleri eşleştirmek istiyorsanız şunu kullanın:

/^\p{L}+$/u

Burada, \p{L}herhangi bir dilden gelen herhangi bir harfle eşleşir


22
Bazı lehçelerde, [Az] 'Z' ve 'a', özellikle '[', '\', ']', '^', '-' ve '' 'arasında oluşan ASCII noktalama değerleriyle eşleşir. 'A' ile 'Z' ve 'a' ile 'z' arasında.
— Lee

Gerçekten istediğim, alfabetik karakterler olduğunda dizgimi eşleştirmenin yolu, alfabetik olmayan bir karaktere sahip olması durumunda eşleşmemelidir.
— Steffan Harris

7
@Lee: Bazıları değil. Hepsi. Bu normal ifade şu anki durumunda yanlış.
— Tim Pietzcker

7
\w is shorthand for A-Za-z- değil gerçekten, \wiçin kestirmeden[a-zA-Z0-9_]
— anubhava

1
İyi bir nokta @ jpmc26. Orijinal hatayı gidermek için cevabımı düzenledim.
— anubhava

55

ASCII olmayan alfabetik karakterler eklemeniz gerekiyorsa ve normal ifadenizdeki lezzet Unicode'u destekliyorsa,

\A\pL+\z

doğru regex olurdu.

Bazı normal ifade motorları bu Unicode sözdizimini desteklemez, ancak \walfasayısal stenonun ASCII olmayan karakterlerle de eşleşmesine izin verir . Bu durumda, rakamları ve alt çizgileri aşağıdaki \wgibi çıkararak tüm alfabeleri alabilirsiniz :

\A[^\W\d_]+\z

\Adizenin başlangıcında, dizenin \zsonunda eşleşir ( ^ve $ayrıca Ruby gibi bazı dillerde satırların başında / sonunda veya belirli normal ifade seçenekleri ayarlanmışsa eşleşir).


38
İngilizce alfabeyi tek alfabe olarak görmediği için +1
— srcspider

7
+1, yukarıdakiyle aynı. ingilizce tek alfabe değildir ve birçok kişi ismini doğru ifade etmek için ascii olmayan karakterler kullanarak yazar.
— Ben Barkay

22

Bu, bir veya daha fazla alfabetik karakterle eşleşir:

/^[a-z]+$/

Aşağıdakileri kullanarak büyük / küçük harfe duyarsız yapabilirsiniz:

/^[a-z]+$/i

veya:

/^[a-zA-Z]+$/

Bu yalnızca latin karakterlerle eşleşir.
— quotesBro


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.