我需要一个正则表达式模式,该模式将以任何顺序匹配至少 7 位数字最多 40 位和 0 个或更多这些字符 ()+-*#
的模式。
到目前为止我有这个:^[(?=.*\d)(?=.*[+\-*()#\]*)]{7,40}$
但它并不满足所有要求。
一些测试:
1234//false 需要 7 位数字
1234563//真 7 位数字和 0 个特殊字符
(66)666-666//true 7 digits and 0 or more special
(3)3-33//小于 7 位的 false
123456789009876543211234567890098765432112345//false 超过 40 位
()-+*#34345789//真正的 7 位数字和 0 个或更多特殊字符
)(*&^%$£@7655432//错误的 7 位数字但特殊字符不在列表中
如有任何帮助,我们将不胜感激。
最佳答案
你可以使用
^[()+*#-]*(?:\d[()+*#-]*){7,40}$
参见 regex demo
详细信息:
^
- start of string[()+*#-]*
- list 中的 0 个或多个特殊字符(?:\d[()+*#-]*){7,40}
- 数字出现 7 到 40 次,后跟列表中的 0 个或多个特殊字符<$
- end of string .
如果您在 pattern
属性中使用它,您可以删除 ^
和 $
,因为它们是由 HTML5 引擎自动添加的。
关于javascript - 正则表达式以任何顺序匹配至少 7 位数字和任意数量的特殊字符的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51820874/