Javascript 在检查字符串是否至少为5位数字时,没有alpha或特殊字符给出意外结果

Javascript 在检查字符串是否至少为5位数字时,没有alpha或特殊字符给出意外结果,javascript,regex,Javascript,Regex,我正在尝试检查字符串是否包含至少5位数字,没有字母或特殊字符。 我的代码如下: var re = /^[a-zA-Z!@#\$%\^\&*\)\(+=._-]{5,}$/g; 但是当我尝试使用prm=“5653636*”或“32266”或“256” 它总是返回false 当我执行以下操作时: re.test(prm) 查看字符串是否没有字母表[^a-zA-Z] ^-表示不匹配,使用[]匹配字符范围 u可以使用长度属性来查找长度 以下代码段将匹配一个没有字母表且长度大于5的字符串 va

我正在尝试检查字符串是否包含至少5位数字,没有字母或特殊字符。
我的代码如下:

var re = /^[a-zA-Z!@#\$%\^\&*\)\(+=._-]{5,}$/g;
但是当我尝试使用
prm=“5653636*”
“32266”
“256”

它总是返回
false
当我执行以下操作时:

re.test(prm)

查看字符串是否没有字母表
[^a-zA-Z]
^-表示不匹配,使用[]匹配字符范围
u可以使用长度属性来查找长度

以下代码段将匹配一个没有字母表且长度大于5的字符串

var _string  =  "1234567";
var re       =  /[^a-z]+/i;

if(re.text(_string)){ // true
}

if(_string.length > 5){ //true
}

考虑到我对您的要求的了解,我认为这就是您所寻找的:

[^a-zA-Z]{5,}

  • 至少5个字符
  • 无字母字符(A-Z)
  • 允许使用数字、特殊字符和空白
如果只允许正则表达式中的特殊字符,可以执行以下操作:


[0-9!@\\$%^&*\(\+=\.-]{5,}

当使用
测试时,不要使用
/g
^\d{5,}$
有什么问题吗?此外,你甚至可以尝试将它转换成一个数字并检查它是否大于10000。尽管这会消除前导零。试试
^([^a-zA-Z\d]*\d){5,}[^a-zA-Z]*$
我的问题是为什么这不起作用?