【问题标题】:Regex for numbers, hyphen and plus + [duplicate]数字、连字符和加号的正则表达式 + [重复]
【发布时间】:2013-08-31 21:26:29
【问题描述】:

我正在使用 jquery 验证引擎并尝试使用正则表达式添加自定义验证。

但是如何设置它只允许数字、连字符和+号呢?

我尝试了不同的方式,例如:

^[0-9a-zA-Z -+]+$
^[0-9a-zA-Z -\+]+$

但如果我将加号放在连字符后,它们都不起作用。为什么?

【问题讨论】:

    标签: php jquery regex


    【解决方案1】:

    在字符类中,-(连字符)用于表示字符范围(就像0-9 表示从09)。您可以将其转义,也可以将其放在末尾以使其正常工作:

    ^[0-9a-zA-Z\-+]+$
    
    ^[0-9a-zA-Z+-]+$
    

    编辑:另外,我不确定您在其中放置了什么空间。由于您的限制,我将其删除,但如果需要,您可以将其添加回来(在第二个正则表达式的连字符之前)。

    【讨论】:

      【解决方案2】:

      连字符创建一个范围(就像您对 0-9 所做的那样。在您的情况下,它会生成一个从空格到 + 的范围(按 ASCII/Unicode 顺序)。这是一堆字符:!"#$%&'()*+ 和空间本身。

      转义连字符或将其放在末尾(并删除空格,除非您想接受空格):

      ^[0-9a-zA-Z+-]+$
      

      【讨论】:

        【解决方案3】:

        - 在字符类中具有特殊含义。事实上,您甚至可以在 a-zA-Z0-9 组中使用它。

        要使用文字连字符,请将其转义 \- 或将其放在类的末尾(就在 ] 之前)

        【讨论】:

          【解决方案4】:

          试试这个正则表达式模式

           ^[0-9a-zA-Z+-]+$
          

          【讨论】:

          • a) 这将匹配任何字符串。如中,没有字符串可以使此模式失败 b)不区分大小写的标志是多余的(或 A-Z 是)。 c) 模式中有两个空格(我认为 OP 甚至不想要其中的空格)。 d)字符类包含从空格到下划线的范围,其中包括almost every other printable ASCII character e)(请在您的模式中包含解释)[meta.stackexchange.com/questions/177757/…
          • 好的,谢谢@m.buettner 向我解释程序
          • 我编辑了我的代码我看到了我以前的答案并检查了你现在我现在实施模式
          猜你喜欢
          • 2016-11-03
          • 2020-07-07
          • 1970-01-01
          • 2013-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-11
          • 1970-01-01
          相关资源
          最近更新 更多