【问题标题】:Regex more than 4 characters containing all except blankspace and new line正则表达式超过 4 个字符,包含除空格和换行之外的所有字符
【发布时间】:2015-09-06 06:49:17
【问题描述】:

我想要一个用于客户端密码 Html5 验证的正则表达式,但不知道正则表达式的工作原理;我在这个正则表达式((?=.*[^a-zA-Z])(?!\s).{4,}) 中找到了最好的答案,但它需要一个数字。我的要求是:

任何超过 4 个字母数字或特殊字符的输入,空格和换行符除外。

请帮忙!

【问题讨论】:

  • 您可以使用以下正则表达式:^[^\s]{4,}$
  • @Abhisek 不客气 :)

标签: regex


【解决方案1】:

您可以使用此^\S{5,}$。意思是:

  1. 匹配输入的开头
  2. 匹配一个非空白字符 ->

    2.1 尽可能多,但至少 5 个

  3. 匹配输入结束

见sn-p:

var passwords = [
  'aa',
  'abcde',
  'ab cd',
  'abcdefg',
  'a1234',
  'a1234 '
];

var rePassword = /^\S{5,}$/

for(var i = 0; i < passwords.length; i++) {
  console.log(passwords[i], rePassword.test(passwords[i]));
}

【讨论】:

    【解决方案2】:

    我会使用类似^(?=.*\d)\S{5,}$ 的东西,其中

    (?=.*\d) 是一个肯定的前瞻断言密码包含至少 1 个数字

    \S{5,} 至少匹配 5 个非空白字符。

    Demo on regex101.com

    【讨论】:

    • 操作说明“超过 4 个”,所以我认为他真的想要 {5,} - 不是吗?
    • 为什么要添加一个要求密码至少包含 1 位数字的规则?这不是必需的。事实上,考虑到 OP 要求是错误的。
    • @Amit - OP 说but it needs necessary a number
    • 这就是 OP 中的正则表达式所做的,但不符合要求。要求(非常明确):任何输入超过 4 个字母数字或特殊字符,空格和换行除外
    【解决方案3】:

    如果您想包含至少一个数字字符的要求,您可以使用:

        ^([^\s]{4,}[0-9][^\s]*)|([^\s]{3,}[0-9][^\s]+)|([^\s]{2,}[0-9][^\s]{2,})|([^\s]+[0-9][^\s]{3,})|([^\s]*[0-9][^\s]{4,})$
    

    (需要至少 5 个非空白字符,包括至少一位数字。)

    嗯,我知道在正则表达式中执行此操作有点冗长。

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 1970-01-01
      • 2021-01-24
      • 2014-04-01
      • 2023-03-11
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多