gpt4 book ai didi

javascript - JavaScript 中的正则表达式未按预期工作

转载 作者:行者123 更新时间:2023-11-28 02:21:20 25 4
gpt4 key购买 nike

我要根据以下条件进行验证:

  1. 它将允许所有特殊字符
  2. 它必须包含至少 1 个字母字母数字
  3. 仅特殊字符不起作用

我用过

/^\d*[a-zA-Z][a-zA-Z0-9]+/

它适用于所有场景,但在输入特殊字符之前确实需要 2 个字符或数字或两者的组合。

示例:

  1. a!!@#$*()_ 失败,但应该通过

  2. a1!@#$*()_ 通过

请帮助纠正正则表达式。

最佳答案

tl;dnr 答案:

/^(?=[!-~]+$)(?=.*[a-zA-Z0-9])/

说明:

在正则表达式中表达“AND”条件的常见方法如下:

/
^
(?= pattern 1)
(?= pattern 2)
(?= pattern 3)
etc
/

基本上,只有当其余部分与所有给定模式匹配时,我们才接受输入的开头 (^)。否则,整个表达式将失败。

在您的示例中,模式 1 匹配所有内容,包括“特殊字符”。根据您的评论,您正在寻找可打印的 ASCII 范围。 ASCII 字符是 [!-~] 并且由于我们不需要任何其他内容(例如“国际字符”)并且不允许空字符串,因此最终模式是:

    [!-~]+$

第二个模式是“至少一个字母数字”,可以改写为“任何数量的其他内容,然后是一个数字或字母”,即,

    .*[A-Za-z0-9]

把它们放在一起:

    /^(?=[!-~]+$)(?=.*[a-zA-Z0-9])/

一些测试:

    re = /^(?=[!-~]+$)(?=.*[a-zA-Z0-9])/

console.log(re.test("hi")) // true
console.log(re.test("a!!@#$*()_")) // true

console.log(re.test("~!!@#$*()_")) // false
console.log(re.test("π+1")) // false
console.log(re.test("")) // false

似乎有效!

关于javascript - JavaScript 中的正则表达式未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617262/

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