2010-02-24 18 views
16

Bir dizenin normal bir ifadeyle tüm kapaklar olup olmadığını nasıl belirleyebilirim? Noktalama işaretleri ve sayılar içerebilir, sadece küçük harf içermez.Dize, düzenli ifadeyle tüm kapaklar olup olmadığını belirleme

+1

değil regex en iyi kullanım .... –

+3

@Mitch bunu üzerinde durabilir misiniz? Bana normal ifade için geçerli bir durum gibi görünüyor. – Amarghosh

+0

Boş hatlar nasıl? Bazı cevaplar onları reddediyor, ama ilginç bir durum. – JXG

cevap

5

Yalnızca neden (string.toUpperCase() == string) kullanılmıyor? ._. Daha "zarif" ...
RegExp'te zorlamaya çalıştığınızı düşünüyorum, ancak başka biri de belirttiğim gibi, bu regexp'in en iyi şekilde kullanıldığını düşünmüyorum ...

+0

Bunu, örneğin grep ile tüm tatmin edici satırları ayıklamak için nasıl kullanırsınız? –

+0

string.toUpperCase() == string, '@ # $%' gibi dizeler için doğru olanı döndürür ve bu sizin aradığınız şey olabilir veya olmayabilir. – rvaldron

1

Dize bir /[a-z]/ ifadesi true değerini döndürürse küçük harf, bu nedenle, küçük harfleri yoksa false, bu denetimi gerçekleştirmeniz yeterlidir. senin gibi sesler

8

istiyorum: ^[^a-z]*$

+0

Bu, yalnızca bir karakter uzunluğundaki dizelerle eşleşecektir. –

+0

@ Tim: Oops. Teşekkürler - düzeltildi. Bir kültür-agnostik çözüm için –

1

En basit olacak gibi görünüyor: İngilizce olmayan karakterler için

^[^a-z]*$ 
18
m/^[^a-z]*$/ 

,

m/^[^\p{Ll}]*$/ 
+1

+1. –

+1

Bu, belki de kapaklar ve sadece sayılar veya yalnızca noktalama işaretleri veya boş dizgiler vb. Ile dizeleri eşleştirecektir. – Totem

+0

@Totem 0 m/[a -zA-z]/' boş dizgeyi/sadece sayıları/yalnızca noktalama işaretlerini ortadan kaldırmak için ... – OST

0

Nasıl yaklaşık (s == uppercase(s)) -> Dize tüm kapaklar mı? Hiç küçük harf vardır emin olduktan sonra başka regex karşı dizeyle eşleşen istiyorsanız

0
$str="ABCcDEF"; 
if (preg_match ("/[a-z]/",$str)){ 
    echo "Lowercase found\n"; 
} 
0

, sen pozitif ileri yönlü kullanabilirsiniz.

^(?=[^a-z]*$)MORE_REGEX$ 

Örneğin, birinci ve sonuncu karakter alfanümerik olduğundan emin olmak için: Muhtemelen

^(?=[^a-z]*$)[A-Z0-9].*[A-Z0-9]$ 
İlgili konular