gpt4 book ai didi

javascript - Jquery 或 JS : How to check for invalid chars on a string?

转载 作者:行者123 更新时间:2023-11-30 18:30:09 25 4
gpt4 key购买 nike

我知道以前有人问过这个问题,但我找到的所有答案在某些情况下都没有正确工作。

我需要验证密码字段并只允许某些字符。

验证是在客户端和服务器端完成的。在 PHP 上,我也无法让正则表达式按照我的需要执行,所以我所做的是将密码拆分为一个字符数组,并根据允许的字符数组检查每个字符。如果任何字符不在数组中,则返回 false。

允许的字符是 0-9、a-z、A-Z 和 `! "? $ % ^ & * ( ) _ - + = { [ } ] : ; @ ~ # | < , > . '/\(不允许使用空格)。

现在我需要用 Javascript 编写类似的东西,但不知道该怎么做。

正则表达式无法正常工作,因为它有时会在没有无效字符时失败(可能是因为字符顺序?)。我从这个网站得到的当前正则表达式是

/^[A-Za-z\s`~!@#$%^&*()+={}|;:'",.<>\/?\\-]+$/

因此,例如,有效密码可以是

urjv()$%...84
40#"!!mbn'"{}
890$%/\|`doc
,-=?wht(!{})=

在 JS 上是否有任何其他解决方案,或者正则表达式实际上是错误的?

感谢您的帮助!

最佳答案

以下字符需要在字符类中进行转义:

 - / [ \ ] ^

请注意,当您使用 new 创建 Regex 对象时,需要转义的字符是不同的。

当这些字符出现时,您不会对其进行转义,其中一些甚至不包含在内。此外,当您指定不允许时,您会在 \s 中包含空格。最后,除非我太快地查看了您的正则表达式,否则您没有包含数字。为了解决您担心顺序会导致正则表达式失败的问题,顺序与字符类无关。

修正后的正则表达式:

/^[0-9a-zA-Z`!"?$%\^&*()_\-+={\[}\]:;@~#|<,>.'\/\\]+$/

这是一个“测试套件”。我不认为它是万无一失的,但它似乎工作正常:

http://jsfiddle.net/radu/AvGtY/

根据需要更改字典,您应该可以去测试大量的正则表达式。请注意,按照当前设置,它只真正检查一致性 - 也就是说,它只检查正则表达式是否找到字典字符串中的所有内容。

此外,您还需要检查服务器端的密码。您的客户端代码很容易被绕过,因此您应该始终在服务器端进行验证以防止这种情况发生。客户端代码对于即时反馈很有用,但在这种情况下没有太多用处。

正如 Qtax 所指出的,以下内容会更短一些,但可以完成同样的事情:

/^[-0-9a-zA-Z`!"?$%&*()_+={[}\]:;@~#|<,>.'\/\\^]+$/

关于javascript - Jquery 或 JS : How to check for invalid chars on a string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882560/

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