正则表达式匹配10-15位数字

cxy*_*xyz 12 java regex

我正在使用下面的正则表达式:

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

if(!teststring.matches())
{
   error("blah blah!");
}
Run Code Online (Sandbox Code Playgroud)

我的要求是:

  1. 要匹配一个不应该以0开头的10-15位数字,并且所有数字都应该是数字.
  2. 如果输入的10-15位数字以零开头,则teststring与pattern.my验证错误blah blah不匹配.
  3. 我的问题是如果我输入10-15位数字,它不以零开头,那么也会显示验证错误信息.

我在正则表达式中遗漏了什么?

Roh*_*ain 18

"^[1-9][0-9]{14}"你匹配的15数字,而不是10-15数字.{14}量词将完全匹配14先前模式的重复.使用{m,n}量词给出一个范围:

"[1-9][0-9]{9,14}"
Run Code Online (Sandbox Code Playgroud)

你并不需要使用Matcher#matches()方法.锚是隐含的.在这里你可以直接使用String#matches()方法:

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


h2o*_*ooo 8

/^[1-9][0-9]{9,14}$/ 将匹配10到15位数的任何数字.

DEMO

尸检:

  • ^ - 这必须是文本的开头
  • [1-9] - 1到9之间的任何数字
  • [0-9]{9,14} - 0到9之间的任何数字匹配9到14次
  • $ - 这必须是文本的结尾