【问题标题】:While checking whether a string minimum 5 digits, no alpha nor special characters gives unexpected results [duplicate]在检查字符串是否至少有 5 位数字时,没有字母或特殊字符会产生意外结果 [重复]
【发布时间】:2016-01-04 12:36:05
【问题描述】:

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

var re = /^[a-zA-Z!@#\$%\^\&*\)\(+=._-]{5,}$/g;

但是当我尝试使用 prm= "5653636*""32266""256"

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

re.test(prm)

【问题讨论】:

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

标签: javascript regex


【解决方案1】:

查看字符串是否没有字母[^a-zA-Z]; ^ - 表示 NOT 并且 [] 用于匹配字符范围 你可以使用 length 属性来找到长度。

下面的 sn-p 将匹配一个没有字母且长度大于 5 的字符串。

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

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

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

【讨论】:

    【解决方案2】:

    鉴于我满足您的要求,我认为这就是您正在寻找的:

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

    • 至少 5 个字符
    • 无字母字符 (A-Z)
    • 允许使用数字、特殊字符和空格

    如果您只想允许您的正则表达式中的特殊字符,您可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2022-08-11
      • 2011-10-13
      • 2012-03-24
      • 2022-11-16
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多