Jquery或JS:如何检查字符串中的无效字符
Jquery or JS: How to check for invalid chars on a string?
我知道以前有人问过这个问题,但在某些情况下,我找到的所有答案都不正确。
我需要验证一个密码字段,并且只允许使用某些字符。
验证在客户端和服务器端都完成。在PHP上,我也无法根据需要执行regex,所以我所做的是将密码拆分为一个字符数组,并根据允许的字符数组检查每个字符。如果数组中没有任何字符,则返回false。
允许的字符为0-9、a-z、a-z和`!"?$%^&*()_-+={[}]:;@~#|<,>.'/''(不允许使用空格)。
现在我在Javascript中需要一些类似的东西,但我不知道如何做到
Regex不能正常工作,因为它有时会在没有无效字符的情况下失败(可能是因为字符顺序?)。我从这个网站得到的当前正则表达式是
/^[A-Za-z's`~!@#$%^&*()+={}|;:'",.<>'/?''-]+$/
因此,有效密码可以是,例如
urjv()$%...84
40#"!!mbn'"{}
890$%/'|`doc
,-=?wht(!{})=
JS上还有其他解决方案吗?或者regex实际上是错误的吗?
谢谢你的帮助!
以下字符需要在字符类中转义:
- / [ ' ] ^
请注意,当您使用new
创建Regex对象时,需要转义的字符是不同的。
当这些角色出现时,你无法逃离它们,其中一些甚至不包括在内。此外,当您指定不允许使用's
时,您将在其中包含空白。最后,除非我看得太快,否则您没有包含数字。为了解决您的担忧,即顺序是导致正则表达式失败的原因,顺序在字符类中不相关。
修正后的正则表达式:
/^[0-9a-zA-Z`!"?$%'^&*()_'-+={'[}']:;@~#|<,>.''/'']+$/
这是一个"测试套件"。我并不声称它是傻瓜式的,但它似乎运行良好:
http://jsfiddle.net/radu/AvGtY/
根据需要更改字典,您应该可以测试大量的正则表达式。请注意,在当前的设置中,它只真正检查一致性——也就是说,它只检查regex是否找到字典字符串中的所有内容。
此外,您还需要在服务器端检查密码。您的客户端代码可以很容易地绕过,所以您应该始终在服务器端进行验证以防止这种情况发生。客户端代码对即时反馈很有用,但在这种情况下没有太多其他功能。
正如Qtax所指出的,以下内容将稍微简短一点,并完成相同的事情:
/^[-0-9a-zA-Z`!"?$%&*()_+={[}']:;@~#|<,>.''/''^]+$/
看起来您想要接受除空白之外的所有字符。这是正确的吗?如果是这样的话,您可以在JS中用以下正则表达式匹配除空白之外的所有内容:
/^'S+$/
示例:http://jsfiddle.net/jnQcd/2/
- 如何将字符串拆分为字符,但在javascript中保留空格
- 如何显示字符串中最多 200 个字符
- 我想在Javascript中探索类似C语言的字符串的整个字符
- 如何用jquery替换字符串中可能变化的字符
- 通过跳过拆分字符在 javascript 中拆分字符串
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 字符串替换-不支持格式字符'}'
- 到UpperCase字符串Javascript中的特定字符索引
- 用类javascript包装span标记中字符串中的字符索引
- 将字符串分组为n个字符的块,并应用替换
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 如何从键Code;中获取字符串/字符值;
- 检查值是否包含字符串字符
- JavaScript字符串字符操作
- 如果数组中的字符串不匹配,请从字符串中删除字符串字符
- Javascript Lingo游戏-字符串字符等于另一个字符串字符
- jQuery替换字符串字符的方法
- Javascript字符串字符检查
- Javascript替换字符串字符
- Javascript的变化与重复(组合)缺失的字符串字符