我写了以下正则表达式来接受一个小写字母和一个大写字母,一位数字和一个特殊字符(!@ ##%)。
/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).*$/
但是上述正则表达式也接受空间。如何在javascript中使用正则表达式来限制空间。
答案 0 :(得分:2)
最简单的方法是匹配模式中的[^ ]*
而不是.*
:
/^(?=.{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!@#$%]*$/
答案 1 :(得分:1)
尝试一下:
^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%])[^ ]*$