簡體   English   中英

正則表達式匹配10-15位數字

[英]Regex to match 10-15 digit number

我正在使用下面的正則表達式:

 Pattern testPattern= Pattern.compile("^[1-9][0-9]{14}");
 Matcher teststring= testPattern.matcher(number);

if(!teststring.matches())
{
   error("blah blah!");
}

我的要求是:

  1. 要匹配一個不應該以0開頭的10-15位數字,並且所有數字都應該是數字。
  2. 如果輸入的10-15位數字以零開頭,則teststring與pattern.my驗證錯誤blah blah不匹配。
  3. 我的問題是如果我輸入10-15位數字,它不以零開頭,那么也會顯示驗證錯誤信息。

我在正則表達式中遺漏了什么?

使用"^[1-9][0-9]{14}"您將匹配15位數字,而不是10-15位數字。 {14}量詞將恰好匹配先前模式的14次重復。 使用{m,n}量詞給出一個范圍:

"[1-9][0-9]{9,14}"

您不需要使用Matcher#matches()方法的錨點 錨是隱含的。 在這里你可以直接使用String#matches()方法:

if(!teststring.matches("[1-9][0-9]{9,14}")) {
    // blah! blah! blah!
}

/^[1-9][0-9]{9,14}$/將匹配10到15位數之間的任何數字。

DEMO

屍檢

  • ^ - 這必須是文本的開頭
  • [1-9] - 1到9之間的任何數字
  • [0-9]{9,14} - 0到9之間的任何數字匹配9到14次
  • $ - 這必須是文本的結尾

或者,一個替代方案,以后您可以一目了然 -

^(?!0)\\d{10,15}$

To match a 10-15 digit number which should not start with 0

在正則表達式中使用行結束錨$ ,限制在9到14之間:

Pattern.compile("^[1-9][0-9]{9,14}$");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM