2013-06-26 91 views
5

我需要一個正則表達式模式,只接受輸入字段的逗號分隔值。例如:abc,xyz,pqr。 它應該拒絕這樣的值:,,sampletext1,text2,正則表達式模式接受逗號或分號分隔值

我還需要接受以分號分隔的值。任何人都可以爲此提出一個正則表達式模式?

+0

在寫兩個答案(由acdcjunior和SK9)的時間。拿你的選擇! – SK9

+0

你所有的例子被拒絕的值仍然有效csv的 –

回答

7

最簡單的形式:

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

Demo here.


我需要限制只有字母。我怎樣才能做到這一點 ?

使用正則表達式(例如unicode字符範圍包括):

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

Demo for this one here

用法示例:

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

我只需要限制字母。我怎樣才能做到這一點 ? –

+0

你是什麼意思的字母?只有A到Z? – acdcjunior

+0

你可以用'[A-Za-z]' –

0

嘗試了下:

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

你可以有文字和Unicode文本之間的空格,如:

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

OP說明:這允許空白。由你決定。 – SK9

1

,工程最簡單的正則表達式是:

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

這裏它是作爲一種方法:

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

請注意,String.matches()不需要開始或結束正則表達式(^和$);他們隱含着這種方法,因爲整個輸入必須匹配返回true。

0

我想你想這一點,根據您的評論只想要字母這裏給出的是等價的(我假設你的意思是字母)

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

相關問題