正则表达式匹配字符和最大长度

时间:2016-05-24 10:39:38

标签: javascript regex

我正在尝试在javascript中创建符合这些要求的正则表达式

  • 以0开头但第二位数字不是0
  • 11-12个字符
  • 必须包含1个空格
  • 没有其他特殊字符或字母,只有数字

到目前为止,我已经想到了 ^[0][1-9][\d ]{9,10}$

然而,

仍然会匹配2个空格或没有空格。到目前为止,我找不到在数字中任何地方只需要一个空格的方法是不成功的。我已经尝试了积极的前瞻,并在网上找到了其他的例子,但是使量化器与要求一起工作已经证明是困难的。

3 个答案:

答案 0 :(得分:9)

您可以使用

/^(?=.{11,12}$)(?=\S* \S*$)0[ 1-9][ \d]+$/

请参阅regex demo

<强>详细信息:

  • ^ - 字符串开头
  • (?=.{11,12}$) - 总长度必须是11到12个字符(只是前瞻检查,如果条件不满足则会失败)
  • (?=\S* \S*$) - 必须只有1个空格(只是前瞻检查,如果条件不满足则会失败)
  • 0 - 第一个匹配的字符必须为0
  • [ 1-9] - 第二个字符是除0或空格
  • 之外的任何数字
  • [ \d]+ - 一个或多个数字或空格
  • $ - 字符串结束。

答案 1 :(得分:2)

您可以将此正则表达式用于正向前瞻:

/^0[1-9](?=\d* \d+$)[ \d]{9,11}$/

RegEx Demo

  • (?=\d* \d+$)确保第一个字符后至少有一个空格
  • 使用{9,11}作为2个字符已在开始时匹配(零和非零)

答案 2 :(得分:2)

这是我的尝试。它比稍微比Wiktors快。由于已经花费了时间,我将分享它。

^(?=\d* \d*$)0[1-9 ][\d ]{9,10}$

See it here at regex101