我为接受一个小写字母和一个大写字母,一位数字和一个特殊字符(!@#$%)编写以下正则表达式。

/^(?=.{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/

10-17 00:03