2015-08-22 12 views
1

我想創建一個正常的表達式,我想要匹配的情況下我的號碼被昏迷分隔。 例如:正則表達式不按分隔符過濾

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

到目前爲止,如果我改變的最後一個*是至少是1,我創建這個expresion

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

+

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

然後,所有先前的方案工作,但不是這一個

1 Not OK//And should be ok 

I'm使用matcher.find()

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

任何想法I'm做錯了我的正則表達式?

回答

1

你可以使用這個表達式:

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

Java的正則表達式:

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

RegEx Demo

PS:要匹配字面\n你將需要:

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