我为接受一个小写字母和一个大写字母,一位数字和一个特殊字符(!@#$%)编写以下正则表达式。
/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).*$/
但是上述正则表达式也接受空间。如何在javascript中使用正则表达式来限制空间。
最佳答案
最简单的方法是匹配模式中的[^ ]*
而不是.*
:
/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%])[^ ]*$/
^^^ change here
如果实际上用“空格”表示任何空格字符,请改用
\S
:/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%])\S*$/
编辑:
相反,如果您只想限制字母数字(大写或小写)以及一组固定的符号,请使用以下模式:
/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%])[A-Za-z0-9!@#$%]*$/
关于javascript - 正则表达式是否允许一些特殊字符,但不允许在javascript中使用空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55095863/