首页 > 解决方案 > 正则表达式允许一些特殊字符但不允许在 javascript 中使用空格?

问题描述

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

/^(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).*$/

但上面的正则表达式也接受空格。如何在 javascript 中使用正则表达式限制空间。

标签: 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!@#$%]*$/

推荐阅读