正则表达式不按分隔符过滤

时间:2015-08-22 12:30:58

标签: java regex

我想创建一个正常的表达式,我希望匹配,以防我的号码被昏迷分开。 例如:

 1 OK
 1,2,3 OK
 1\n2,3 OK
 1,\n Not OK
 1,,2 Not OK
 1,\n2 Not Ok

到目前为止,我创建了这个表达

 \d+(([,.|\n])+\d+)*

如果我用+

将最后一个*更改为至少1
 \d+(([,.|\n])+\d+)+

然后所有以前的方案都有效,但不是这个

  1 Not OK//And should be ok

我正在使用matcher.find()

    Matcher matcher = Pattern.compile(pattern).matcher(number);
    if (matcher.find()) {
        System.out.println("total number:" + matcher.group(0));;
    }

知道我的正则表达式中我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

^\d+(?:(?:,|\n)\d+)*$

Java正则表达式:

Pattern p = Pattern.compile("^\\d+(?:(?:,|\\n)\\d+)*$");

RegEx Demo

PS:要匹配文字\n,您需要:

^\d+(?:(?:,|\\n)\d+)*$