【问题标题】:Regex to include all characters with at least one letter and at least 6 characters long in JavaScript正则表达式在 JavaScript 中包含至少一个字母和至少 6 个字符的所有字符
【发布时间】:2017-12-25 06:46:24
【问题描述】:

到目前为止我做了什么?

我已经创建了这个正则表达式

/[.*a-z][*\w*\W]{5,}/i

应该执行以下操作:

  1. [.*a-z]:至少搜索一个字母。
  2. *\w :搜索零个或多个单词字符(a-z、A-Z、0-9,包括 _(下划线)。
  3. *\W :搜索零个或多个非单词字符(+-= 等)。
  4. {5, }:搜索 [*\w*\W] 是否至少有 5 个字符,[.*a-z] 会查找至少一个字符,组合起来总共有 6 个字符。
  5. /i :搜索小写和大写。

有什么问题?

我希望上面的正则表达式接受一个字符串,该字符串在字符串中的任何位置至少包含一个字母,但它仅在该字母包含在开头时才有效。为什么 ?例如:字符串y12345 有效,但字符串123y45 无效。由于我的正则表达式不包含插入符号 (^),但它的行为似乎就像在我的原始正则表达式的开头存在插入符号 (^)。像这样/^[.*a-z][*\w*\W]{5,}/i

我也想知道这是否是密码的完美正则表达式?

非常感谢您抽出宝贵的时间。

【问题讨论】:

  • 试试这个/[a-zA-Z]/g.test(str) && str.length > 6,其中str是你的字符串的名字。
  • 我这样做了/[.*a-z][*\w*\W]{5,}/ig,但这仍然不起作用。
  • 您的正则表达式不适用于78s234
  • @SherylHohman 我正在使用它看看regex101.com/r/Tl2sVZ/1
  • 密码的“完美”正则表达式应该是一个单独的问题。或者更确切地说是单独的谷歌搜索。此外,答案取决于您的密码要求(即您告诉用户他们必须满足哪些限制)。我当然说6 的密码长度不是对密码的完美要求,也不是完美的正则表达式。

标签: javascript regex


【解决方案1】:

这样试试;

^(?=.*[a-zA-Z]).{6,}$

您可以找到demo

模式与这些词匹配;

y12345
123y45
yyyyyy
12345y

【讨论】:

  • 我不明白它如何匹配非单词字符,你能解释一下吗?您没有使用\W 或指定任何特殊字符,但它仍然匹配非单词字符如何?是因为.{6, }中的.吗?
  • 使用 '\W' 不是必须的。该模式只是寻找与任何字符“.*”(单词或非单词)匹配的正向前瞻,但至少应该是一个单词字符。 ([a-zA-Z])
  • 阅读这篇文章后:blog.codinghorror.com/password-rules-are-bullshit 我得出的结论是,您不应该对密码强制执行任何规则(除了最小字符数),您应该在密码中包含 Unicode。所以考虑到这一点,我将我的正则表达式编辑为:/.{8,}/u。你的想法是什么?
  • 执行密码策略的方法有很多。在我看来,密码必须包含大写字母、数字和特殊字符,并且字符长度至少应为 8。使用您的正则表达式模式,例如客户端可以将密码设置为“11111111”。实际上,这让我觉得简单而错误。
  • 正如我所说,这是我的意见。决定权在你。
猜你喜欢
  • 2011-07-28
  • 2022-12-03
  • 2012-05-30
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2011-08-26
相关资源
最近更新 更多