gpt4 book ai didi

javascript - 正则表达式允许特殊字符

转载 作者:行者123 更新时间:2023-11-30 15:38:00 24 4
gpt4 key购买 nike

我正在使用在线正则表达式检查器,例如 regex101检查将由 javascript 使用的我的正则表达式,例如(工作但减少正则表达式仅作为示例)

state = /^[a-zA-Z0-9]$/.test($(control).val())

我的正则表达式是

(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9].{5,19}

当被切成 block 时,应该意味着......

(?=.*[A-Z])  - Must include an Upper case char
(?=.*[0-9]) - Must include a numeric
[a-zA-Z0-9. ] - Can include any lower or upper case char, or Numeric, a period or space
. - Matching previous
{5,19} - the string must be 6-20 characters in length

然而,这仍然允许特殊字符,例如 !。

我没有对小数使用\d,因为我认为 [0-9] 在这方面应该更严格,并且删除了句点和空格以查看是否是这个原因,但无济于事。

允许使用特殊字符我哪里出错了?

最佳答案

你需要删除你认为匹配前面的最后一个 .,它实际上匹配除换行符之外的任何字符,所以这就是 !正在通过。

所以 (?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9].{5,19} 应该是 (?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{5,19}

我还以为我会提到 \d[0-9] 之间没有任何区别。

已更新 - 以下内容应该可以解决您在正则表达式中看到的问题 - (?=.*[A-Z])(?=.*[0-9])[a -zA-Z0-9\.\s]{6,20}$

  • 添加了 \.(允许 .)
  • 添加了\s(允许空白字符)
  • {5, 19} 更改为 {6, 20}$ 以确保正确的字符匹配

如果你想在regex101中测试这个版本的正则表达式here

关于javascript - 正则表达式允许特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227375/

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