当前正则表达式:
^([\d-]*[A-z]?|[A-z]?[\d-]*|[\d-]*[A-z]?[\d-]*){3}$
(最多允许3个字母和任意数量的数字或连字符)
我还想允许正斜杠(/)就像hypen( - ),其中没有限制,但我做错了,它不符合以下顺序。
更新了正则表达式:
^([\d-]*[\d/]*[A-z]?|[A-z]?[\d-]*[\d/]*|[\d-]*[\d/]*[A-z]?[\d-]*[\d/]*){3}$
(允许最多3个字母和任意数量的数字或连字符或正斜杠)
好: 1234-aAa /
好: 1234 / aAa -
差错: 1234aAa / -
这只发生在正斜杠和3个字母后添加连字符时,我更新的正则表达式出了什么问题?顺序对任何字符都无关紧要,它只对字符串中的总字符数有效。谢谢!
答案 0 :(得分:1)
在这里试试
^(?=(?:[^a-z]*[a-z]){0,3}[^a-z]*$)[a-z0-9/-]*$
查看并测试here on Regexr
我只使用a-z
和IgnoreCase选项,因为A-z
不是[A-Za-z]
,其中有一些字符更多。
所以,基本上我的正则表达式匹配我在最后的字符类中允许的所有[a-z0-9/-]*
。
此部分(?=(?:[^a-z]*[a-z]){0,3}[^a-z]*$)
是一个积极的前瞻,确保您需要最多3个字母。见here for more about lookaheads