tl; Dr.
Karakter sınıfınıza bir boşluk ekleyin .
^[a-zA-Z0-9_ ]*$
Şimdi, katı olmak istiyorsanız ...
Yukarıdakiler tam olarak doğru değil. Sıfır veya daha fazla*
anlamına gelmesi nedeniyle, genellikle eşleşmek istemediği aşağıdaki durumların tümü ile eşleşir:
- Boş bir dize "".
- "", Tamamen boşluklardan oluşan bir dize.
- Boşlukları olan ve / veya izleri olan "Hello World" dizesi
- Sözcükler arasında birden çok boşluk içeren bir dize, "Merhaba Dünya".
Başlangıçta OP bu kadar temel bir soru sorduğu için, bu ayrıntıların girmeye değer olduğunu düşünmüyordum. Şimdi soru biraz popülerlik kazandığına göre, şunu söylemek istiyorum ...
Hangi, benim lezzet (kullanmadan \w
) anlamına gelir:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(Lütfen ne olursa olsun @stema'yı oylayın.)
Bu (ve @ stema's) yanıtı hakkında dikkat edilmesi gereken bazı şeyler:
Sözcükler arasında birden çok boşluğa izin vermek istiyorsanız (örneğin, yanlışlıkla çift boşluklara izin vermek istiyorsanız veya PDF'den kopyalanmış bir metinle çalışıyorsanız), +
boşluktan sonra bir boşluk ekleyin :
^\w+( +\w+)*$
Sekmelere ve yeni satırlara (boşluk karakterleri) izin vermek istiyorsanız, alanı bir ile değiştirin \s+
:
^\w+(\s+\w+)*$
Burada +
varsayılan olarak öneririm, çünkü örneğin, Windows çizgi satırları sırayla iki boşluk karakterden oluşur \r\n
, bu nedenle+
her ikisini de yakalamanız .
Hala çalışmıyor?
Kullandığınız normal ifadelerin lehçesini kontrol edin. * Java gibi dillerde siz, ters eğik çizgi kaçış gerekecek ie \\w
ve \\s
. Yaşlı ya da daha fazla temel dil ve yardımcı programlar, gibi sed
, \w
ve \s
tanımlanmamış, bu yüzden karakter sınıfları, onları yazmak örn [a-zA-Z0-9_]
ve [\f\n\p\r\t]
sırasıyla.
* Bu sorunun etiketlendiğini biliyorumvb.net, ancak 25.000'den fazla görüşe dayanarak, sadece bu soruya katılanlar değil. Şu anda arama ifadesi, normal ifade alanı kelimesi için Google'da ilk hit .