Javascript 正则表达式以匹配至少7位数字的模式和任意数量的特殊字符

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

我需要一个正则表达式模式,该模式将匹配至少7位(最多40位)的模式,并且这些字符中的0个或更多以任何顺序排列

到目前为止,我已经做到了:
^[(?=.*\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或更多来自
  • (?:\d[()+*#-]*){7,40}
    -7到40个数字,后跟列表中的0个或更多特殊字符
  • $
    -

如果您在
模式
属性中使用它,您可以删除
^
$
,因为它们是由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的部分原因。我编辑了这个问题以澄清问题