Java {n}中的量词接受n+1个输入


public static boolean validateState (String state)
{
return state.matches( "[1-9]\d{2}-[1-9]\d{4}" ) ;
}

为什么这个函数在连字符之前需要3个数字,在连字符之后需要5个数字,当我把2和4放在括号里时?请帮助. .

在这两种情况下都删除[1-9]。你实际上是在尝试匹配:

  • 一个数字(1-9),后面跟着
  • 两位数字,后面跟着
  • 一个连字符,后面跟着
  • 一个数字(1-9),后面跟着
  • 四位数

或者更简洁地说:[0-9]等价于\d

您可能需要[1-9]\d-[1-9]\d{3}\d{2}-\d{4}

对于您提供的RegEx "[1-9]d{2}-[1-9]d{4}"


a)[1-9]接受一个数字
b) d{2}接受两位数字

所以,它总共接受3个数字(在连字符之前,即"[1-9]d{2}"部分)。

同样,连字符后也接受4位数字。

你可能想使用以下任何一种:
1) d {2} - d {4}
2) (1 - 9) d {1} - [1 - 9] d {3}

相关内容

  • 没有找到相关文章

最新更新