【问题标题】:RegEx match making with any character length [closed]任何字符长度的正则表达式匹配[关闭]
【发布时间】:2013-10-15 23:28:22
【问题描述】:

嗨,所以我需要编写一个程序来验证输入。

规格为“仅限字母、空格、冒号、分号、破折号、逗号、撇号和数字字符 (0-9) - 不能为空白”

当我有明确数量的字符要使用时,我知道如何执行此操作,但在这种情况下,它可以是任意数量的字符,1-50,我不知道在这种情况下如何处理正则表达式表示法任意数量的字符。我该如何开始?

【问题讨论】:

    标签: php regex validation


    【解决方案1】:

    当您说输入行不能为空白时,我想,虽然您想允许空格,但该行本身不能只是空格。

    基于这种看法,我建议使用这个正则表达式。括号中的负前瞻确保该行不全是空格。

    ^(?!\s+$)[-A-Za-z0-9:;'\s]{1,50}$
    

    【讨论】:

      【解决方案2】:

      如果你想匹配任意数量的东西(但至少一个),你只需要+ 字符。这是一个例子:

      ^[A-Za-z :;\-,'\d]+$
      

      【讨论】:

        【解决方案3】:

        匹配整个字符串:

        ^[A-Za-z0-9 :;,'-]{1,50}$

        将其作为字符串的一部分进行匹配:

        [A-Za-z0-9 :;,'-]{1,50}

        【讨论】:

          【解决方案4】:

          在正则表达式中有几种表示多重性的选项:

          k? 表示可能有 0 或 1 个k,即 k

          k*表示可能有 0 个或多个 ks,例如 , k, kk, ...

          k+ 表示可能有 1 个或多个 ks,例如k, kk, ...

          k{5} 表示正好有 5 个ks,即kkkkk

          k{3,} 表示有至少 3 个ks,例如kkk, kkkk, ...

          k{2,4} 表示有 2、3 或 4 个ks。

          更多阅读请查看PHP Documentation的相应页面。

          【讨论】:

          • 很好的解释,只有k{,5} 不见了。
          • 由于链接页面k{,5}不是量词{,6} is not a quantifier, but a literal string of four characters.
          • 哦,是的!让我想起了我忘记的事情:它总是写成k{0,max}
          猜你喜欢
          • 1970-01-01
          • 2012-01-21
          • 2015-04-02
          • 2011-12-22
          • 1970-01-01
          • 2012-08-22
          • 1970-01-01
          • 1970-01-01
          • 2013-08-02
          相关资源
          最近更新 更多