Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匹配字符和最大长度的正则表达式_Javascript_Regex - Fatal编程技术网

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

Javascript 匹配字符和最大长度的正则表达式,javascript,regex,Javascript,Regex,我正在尝试用javascript创建一个符合这些要求的正则表达式 以0开头,但第二个数字不是0 11-12个字符长 必须正好包含1个空格 没有其他特殊字符或字母,只有数字 到目前为止,我已经想出了 ^[0][1-9][\d]{9,10}$ 但是,这将仍然匹配2个空格或没有空格。到目前为止,我还没有找到一种方法,在数字中的任何地方只需要一个空格。我已经尝试了积极的前瞻,并在网上找到了其他例子,但是让量词与需求配合使用被证明是困难的。您可以使用 /^(?=.{11,12}$)(?=\S* \S*

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

  • 以0开头,但第二个数字不是0
  • 11-12个字符长
  • 必须正好包含1个空格
  • 没有其他特殊字符或字母,只有数字
到目前为止,我已经想出了
^[0][1-9][\d]{9,10}$

但是,这将仍然匹配2个空格或没有空格。到目前为止,我还没有找到一种方法,在数字中的任何地方只需要一个空格。我已经尝试了积极的前瞻,并在网上找到了其他例子,但是让量词与需求配合使用被证明是困难的。

您可以使用

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

详细信息:

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

您可以将此正则表达式与正向前瞻一起使用:

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

  • (?=\d*\d+$)
    确保在第一个字符后至少有一个空格
  • 使用
    {9,11}
    作为开始时已匹配的两个字符(零和非零)
    • 以下是我的尝试。它比Wiktors稍快一点。既然时间已经过去了,我就分享它

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

      .

      非正则表达式解决方案是否适用于您?它正在HTML5模式属性中使用,因此需要是一个regexAh brilliant,演示提供了一个很好的分解,以帮助您理解它。我从来没有想过使用lookahead来检查长度。非常感谢。给定的要求意味着应该允许一个空格作为第二个空格。你的正则表达式没有。问题只是说
      必须正好包含1个空格,这就是我的答案所允许的。问题还说:
      第二个数字不是0(不是数字部分)。它的要求有点粗略
      以0开头,但第二个数字不是0,这意味着空格可以是第二个。但这也意味着不允许使用
      0…
      ,因为第二个数字是
      0
      。不知道……;)