gpt4 book ai didi

javascript - 正则表达式。 20 个字母和最多 2 个 ( . - _ )

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:01 24 4
gpt4 key购买 nike

我正在尝试为 html 输入字段建立一个正则表达式模式,它只允许最多 20 个组合的字母和数字,其中最多只能有两个破折号 (-)、下划线 (_) 和句号 (. )

所以像只允许使用两个符号和允许使用任意数量的字母和数字,它们加起来必须在 4 到 20 之间。

这会是什么模式?

示例(非功能)版本可能类似于 [A-Za-z0-9([\._-]{0,2})]{4,20}

解决方案:

我决定使用@pascalhein @Honore Doktorr 的答案,即使用前瞻。最终模式是 ^(?=[A-Za-z0-9]*([._-][A-Za-z0-9]*){0,2}$)[A-Za- z0-9._-]{4,20}$

最佳答案

你可以在开始的时候用lookahead来验证长度:

^(?=.{4,20}$)

然后分别列出您的正则表达式允许的所有情况:

[A-Za-z0-9]* (no special chars)

[A-Za-z0-9]*[._-][A-Za-z0-9]* (one special char)

[A-Za-z0-9]*[._-][A-Za-z0-9]*[._-][A-Za-z0-9]* (two special chars)

它并不漂亮,但我相信它应该有用。这是最终的表达:

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

编辑:

实际上,使用前瞻性测试特殊字符的数量可能会更好:

^(?=[A-Za-z0-9]*([._-][A-Za-z0-9]*){0,2}$)[A-Za-z0-9._-]{4,20}$

关于javascript - 正则表达式。 20 个字母和最多 2 个 ( . - _ ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30329558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com