gpt4 book ai didi

javascript - 仅允许字母数字和特殊字符的正则表达式不起作用

转载 作者:行者123 更新时间:2023-12-03 07:41:34 25 4
gpt4 key购买 nike

我构建了以下正则表达式,它允许仅满足所有三个条件的字符串:

  1. 允许使用字母数字字符。
  2. 允许在正则表达式中定义特殊字符。
  3. 字符串长度必须最少 8 个字符,最多 20 个字符。

正则表达式是:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]$"

我使用以下 Javascript 代码来验证输入:

var regPassword = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]$");

regPassword.test(form.passwordField.value);

对于 abc123!ZXCBN 等输入,test() 方法返回 false。我尝试在正则表达式中查找问题,但没有成功。是什么原因导致正则表达式验证失败?

最佳答案

我发现两个主要问题。一是在字符串 "..." 中,反斜杠 \ 具有特殊含义,与它们在正则表达式中的特殊含义无关。特别是, \d 最终变成了 d — 这不是你想要的。最好的解决方法是使用 /.../ 表示法而不是 new RegExp("..."):

var regPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]$/;

另一个问题是您的正则表达式不符合您的要求。

实际上,您所说的要求并没有真正意义,但我猜您想要这样的东西:

  1. 必须包含至少一个小写字母、至少一个大写字母、至少一个数字以及至少一个特殊字符 $@$!%*?&
  2. 只能包含小写字母、大写字母、数字和特殊字符$@$!%*?&
  3. 总长度必须介于 8 到 20 个字符之间(含 8 和 20 个字符)。

如果是这样,那么您已经管理了#1 和#2,但忘记了#3。现在,您的正则表达式要求长度恰好为 1。要解决此问题,您需要在 [A-Za-z\d$@$!% 之后添加 {8,20} *?&] 部分:

var regPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,20}$/;

关于javascript - 仅允许字母数字和特殊字符的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35396978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com