代码之家  ›  专栏  ›  技术社区  ›  Kumar

构造regex只允许一个“+”

  •  -1
  • Kumar  · 技术社区  · 8 年前

    我正在处理以下正则表达式,我希望我的正则表达式仅在开头有一个“+”时才返回true,而不是在任何其他字符之后。目前,对于许多plus,它返回true,如下所示: +61+282827272,但有效输入为+61262828282。

    ^([0|\+[0-9]{1,5})?([1-9][0-9]{7,15})$
    

    但是,此字符串可以不带+开头,例如:00123456789或123456789

    2 回复  |  直到 8 年前
        1
  •  1
  •   Aaron    8 年前

    你的正则表达式匹配 + 因为你有一个未关闭的 [character class] :

    ^([0|\+[0-9]{1,5})?([1-9][0-9]{7,15})$
       ^^^^^^^^
    

    不确定要写什么,但这是一个包含字符0的字符类, | ,则, + ,则, [ 数字从0到9,最多可以重复五次,这就是为什么 + 前五个字符将匹配。

        2
  •  0
  •   L. Pier Roberto    8 年前

    我想试试这个: ^\+.*?\+.*$ 如果这是真的,那么在字符串的中间有一个+