Javascript 正则表达式以匹配至少7位数字的模式和任意数量的特殊字符
我需要一个正则表达式模式,该模式将匹配至少7位(最多40位)的模式,并且这些字符中的0个或更多以任何顺序排列 到目前为止,我已经做到了:Javascript 正则表达式以匹配至少7位数字的模式和任意数量的特殊字符,javascript,html,regex,Javascript,Html,Regex,我需要一个正则表达式模式,该模式将匹配至少7位(最多40位)的模式,并且这些字符中的0个或更多以任何顺序排列 到目前为止,我已经做到了:^[(?=.*\d)(?=.[+-*()\\]*)]{7,40}$,但它并不能满足所有要求 一些测试: 1234//false需要7位数字 1234563//true 7位数字和0个特殊字符 (66)666-666//true 7位数字和0或更多特殊值 (3)3-33//false小于7位 123456780098765432112345678009876543
^[(?=.*\d)(?=.[+-*()\\]*)]{7,40}$
,但它并不能满足所有要求
一些测试:
1234//false需要7位数字
1234563//true 7位数字和0个特殊字符
(66)666-666//true 7位数字和0或更多特殊值
(3)3-33//false小于7位
123456780098765432112345678009876543212345//false超过40位
()-+*34345789//真7位数字和0个或更多特殊字符
)(*&^%$£@7655432//false 7位,但特殊字符不在列表中
任何帮助都将不胜感激。您可以使用
^[()+*#-]*(?:\d[()+*#-]*){7,40}$
见
详细信息:
-^
-0或更多来自[()+*#-]*
-7到40个数字,后跟列表中的0个或更多特殊字符(?:\d[()+*#-]*){7,40}
-$
如果您在
模式
属性中使用它,您可以删除^
和$
,因为它们是由HTML5引擎自动添加的。如果需要将七位数字与忽略的各种字符精确匹配,可以使用以下正则表达式:
^[()+\-*#]*(?:\d[()+\-*#]*){7}$
对于7-40,您将使用{7,40}
而不是{7}
这允许文本以任何特殊字符(或无)开头,然后需要至少一个数字后跟任何特殊车辆(或无),七次
例如:
功能测试(str,expect){
var result=/^[()+\-*.]*(?:\d[()+\-*.]*){7,40}$/.test(str);
log(str,result,!result==!expect?“OK”:“ERROR”);
}
测试(“1234”,假);
测试(“1234563”,正确);
测试(“(66)666-666”,正确);
试验(“(3)3-33”,假);
测试(“1234567800987654321123456780098765432112345”,假);
测试(“()-+*#34345789”,真);
test(“)(*&^%$@7655432”,false);
第三个条件不应该是false吗?有8个数字。@UnderrableLightness-这就是为什么我认为它是7-40,而不是7的部分原因。我编辑了这个问题以澄清问题