【问题标题】:Regex pattern accepting comma separated values接受逗号分隔值的正则表达式模式
【发布时间】:2013-06-26 04:03:36
【问题描述】:

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

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

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

【问题讨论】:

  • 在撰写本文时,此处给出的两个答案(来自 acdcjunior 和 sk9)是等效的。任君挑选!
  • 您的所有示例拒绝值仍然是有效的 csv

标签: java regex


【解决方案1】:

最简单的形式:

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

【讨论】:

  • 我只需要限制字母。我该怎么做?
  • 字母是什么意思?仅从 A 到 Z?
  • 你可以用[A-Za-z]做到这一点
  • 我需要将我的正则表达式模式 ^[\u0400-\u04FFa-zA-Z ]*$ 更改为上述要求。
  • @KrishnanunniPV 已更改。现在看看。
【解决方案2】:

试试:

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

您可以使用在线正则表达式测试器进行练习。例如,http://regexpal.com/

【讨论】:

    【解决方案3】:

    尝试下一个:

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

    单词和 Unicode 文本之间可以有空格,例如:

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

    【讨论】:

    【解决方案4】:

    最简单的正则表达式是:

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

    这是一种方法:

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

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

    【讨论】:

      【解决方案5】:

      我认为你想要这个,根据你的评论只想要字母(我假设你的意思是字母)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多