正则表达式模式接受逗号或分号分隔值

时间:2013-06-26 04:03:37

标签: java regex

我需要一个正则表达式模式,它只接受输入字段的逗号分隔值。

例如:abc,xyz,pqr。 它应拒绝以下值:, ,sample text1,text2,

我还需要接受以分号分隔的值。任何人都可以为此建议正则表达式吗?

5 个答案:

答案 0 :(得分:8)

最简单的形式:

^\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.

答案 1 :(得分:2)

尝试:

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

您可以使用在线正则表达式测试程序。例如,http://regexpal.com/

答案 2 :(得分:1)

尝试下一个:

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

您可以在单词和Unicode文本之间添加空格,例如:

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

答案 3 :(得分:1)

最简单的正则表达式是:

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

这是一种方法:

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

请注意String.matches()不需要开头或结尾正则表达式(^和$);它们隐含在此方法中,因为整个输入必须匹配才能返回true。

答案 4 :(得分:0)

我想你想要这个,基于你的评论只想要字母(我假设你的意思是字母)

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