【问题标题】:PHP Regular Expression Between {x,y}{x,y} 之间的 PHP 正则表达式
【发布时间】:2011-04-27 09:10:29
【问题描述】:

我还没有很好地处理正则表达式,但我希望有人可以帮助我。我在这里找到了这个表达式,它几乎正是我需要的,但我需要添加它

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/

我需要确保提交的字符串长度在 {4, 20} 4 到 20 个字符之间,我看过其他更简单的示例,但这个表达式有点复杂。在这种情况下,我应该在哪里添加“{4, 20}”?

【问题讨论】:

    标签: php regex preg-match expression


    【解决方案1】:

    您可以在开头添加 positive lookahead 以检查正确数量的字母,例如

    /^(?=.{4,20}$)[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
    

    【讨论】:

    • 感谢您的解决方案和资源。我去看看。
    【解决方案2】:

    这是一种快速修复方法,适用于任何需要强制字符串长度的情况,无论正则表达式如何:

    /^(?=.{4,20}$)[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
    

    您还可以使用这种前瞻技术来累积多个正则表达式。

    【讨论】:

    • 感谢我所需要的! :)
    【解决方案3】:

    你试过了吗:

    /^([A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*){4,20}$/
    

    【讨论】:

    • @Alin Purcaru 是的,您的解决方案看起来更简洁 - 之前没有真正使用过前瞻技术:)
    • 我不想说你的解决方案不干净。我想说这不正确。重复条件表明分组括号内的表达式需要重复 4 到 20 次,但该表达式的字符数可能不定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2012-02-22
    • 2018-04-06
    相关资源
    最近更新 更多