2016-04-09 30 views
0

ScannerSystem.in işlevini kullanarak bir kullanıcı girdisini denemek ve doğrulamak için bir Java normal ifadesi almaya çalışıyorum. Doğrulamaya çalıştığım, yalnızca giriş olarak harfleri içerebilen ve birden fazla sözcük içerebilen bir kullanıcı girdisidir. Örneğin ("Test1") yazıyorsam Bir harf atar, sadece harfleri girmem gerektiğini ve tekrar girmek istediğimi belirten bir mesaj atar, ancak ("Test 1") yazmam gerekirse, o zaman regeximden geçerdi, alanın bu soruna neden olduğu görünüyor, ama regeximde bir boşluk eklemek benim problemimi çözmedi. Herhangi bir yardım büyük takdir edilecektir. Aşağıda sorunları var demektir benim kod bölümüdür: Bu birinin açıkça yanlış olabilirJava Tarayıcı hasNext() string regex doğrulama

System.out.println("Please enter the your name: "); 

while(!input.hasNext("[a-zA-Z]+")){ 

    System.out.println("Your name must consist of only letters"); 
    input.nextLine(); 

} 

String name = input.nextLine(); 

ama Java ve regex için yeni ve neyin yanlış gidiyor bütün gün öğrenmek için çalışıyorlar Başarı yok.

Zaman ayırdığınız için teşekkür ederiz.

+0

Deneyi deneyin^[a-zA-Z_] * $ 'Hiçbir şekilde mükemmel değildir, ancak basittir Yeni bir kişinin anlaması için yeterli. – TEK

+0

Belki '^ [a-zA-Z_] + $' çok boş dizelere izin verilmez. – totoro

cevap

1

Yapmanız gereken tek şey, []'un içine bir boşluk eklemektir. Ben de (dize sonu için) ve $ (o dize başlangıcı olmalıdır devlet) ^ kullanarak öneririm:

^[a-zA-Z ]+$ 

Ayrıca Tab gibi, tüm boşluk seçmek için \s kullanabilirsiniz

tam kodu:

System.out.println("Please enter the your name: "); 

while(!input.hasNext("^[a-zA-Z ]+$")){ 
    System.out.println("Your name must consist of only letters"); 
    input.nextLine(); 
} 

String name = input.nextLine(); 

Eğer * gibi simgeleri izin vermek istiyorsanız, yani her şey bu t sayıları. \d+'u kullanabilirsiniz. Eğer eşleşirse, o zaman hatayı çıkartın (while ifadenizdeki !'u kaldırmanız gerekir)

+0

Aynı cevabı teklif edecektim, ama işe yaramazdı .. Bu kodu John Doe ile test ettim ve bu döngüyi yönlendirdi ve neden olduğunu anlayamıyorum .. – Maljam

+0

Maljam olarak mesele, bütün gün bunu denedim, sadece bir alan varsa girdiyi onaylamıyor gibi görünüyor. [] 'De eklenen alanla birlikte, yalnızca "Test1" gibi bir dizi üzerinde çalışacak ve "Test 1" i değil. Öneri için teşekkürler Druzion! – ChocolateDogBone

+0

@ChocolateDogBone "\ s" ile denediniz mi? – Druzion