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

2022-09-03 17:52:22

我使用以下正则表达式:

 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位数字,则测试字符串与 pattern.my 验证错误blah blah不匹配。
  3. 我的问题是,如果我输入10-15位数字,不以零开头,那么也会显示验证错误消息。

我是否在正则表达式中缺少任何内容?


答案 1

与你匹配的是数字数字,而不是数字。 量词将完全匹配先前模式的重复。使用量词给出一个范围:"^[1-9][0-9]{14}"1510-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!
}

答案 2

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

演示

尸检

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