2013-06-26 32 views
5

Bir giriş alanı için yalnızca virgülle ayrılmış değerleri kabul eden bir regex desenine ihtiyacım var. Örneğin: abc,xyz,pqr. ,,sampletext1,text2,Regex pattern virgül veya noktalı virgülle ayrılmış değerleri kabul ediyor

Ayrıca da noktalı virgül ayrılmış değerleri kabul etmek gerekir: Sanki değerlerini reddetmek gerekir. Bunun için bir regex modeli önerilebilir mi?

+0

burada verilen eşdeğer alfabe isteyen Yorumlarınız dayalı bu, istediğini düşünüyorum. İstediğini al! – SK9

+0

Tüm örnek reddedilen değerleriniz hala geçerli csv's –

cevap

7

basit biçim:

^\w+(,\w+)*$ 

Demo here.


sadece alfabe kısıtlamak gerekir. Bunu nasıl yapabilirim ?

düzenli ifade (örneğin Unicode karakter dahil aralığı) kullanın:

^[\u0400-\u04FFa-zA-Z ]+(,[\u0400-\u04FFa-zA-Z ]+)*$ 

Demo for this one here.

Örnek kullanım:

public static void main (String[] args) throws java.lang.Exception 
{ 
    String regex = "^[\u0400-\u04FFa-zA-Z ]+(,[\u0400-\u04FFa-zA-Z ]+)*$"; 

    System.out.println("abc,xyz,pqr".matches(regex)); // true 
    System.out.println("text1,text2,".matches(regex)); // false 
    System.out.println("ЕЖЗ,ИЙК".matches(regex)); // true 
} 

Java demo.

+0

Sadece alfabeleri kısıtlamanız gerekiyor. Bunu nasıl yapabilirim ? –

+0

Alfabeler ile ne demek istiyorsun? Sadece A'dan Z'ye? – acdcjunior

+0

Bunu, [A-Za-z] ' –

2

Dene:

^\w+((,\w+)+)?$ 

Birlikte pratik yapabilirsiniz çevrimiçi regexp'in test vardır. Örneğin, http://regexpal.com/.

0

sonraki deneyin:

^[^,]+(,[^,]+)*$ 

Sen gibi kelimeler ve Unicode metin arasında boşluk olabilir: çalışır

word1 word2,áéíóú áéíúó,ñ,word3 
+0

OP'ye Not: Bu, beyaz alan sağlar. Sana bağlı. – SK9

1

en basit regex geçerli: Burada

^\w+(,\w+)*$ 

Ve yöntem şu şekildedir:

public static boolean isCsv(String csv) { 
    return csv.matches("\\w+(,\\w+)*"); 
} 

Not: String.matches(), başlangıç ​​veya bitiş regex (^ ve $); Bu yöntemle ima edilirler, çünkü tüm girdisi true olarak döndürülmelidir.

0

Ben sadece (I Harfleri demek varsayıyorum) (acdcjunior ve SK9 itibaren) her iki cevapları yazma sırasında

^[A-Za-z]+(,[A-Za-z]+)*$

İlgili konular