如何在正则表达式密码模式中转义 *

How to escape * in regex password pattern

我使用 validate.js 进行表单验证,并且有一个密码模式,我只想允许使用以下特殊字符之一:-!@_#+

密码格式如下:

 password1: {
  pattern:/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-!@_#+])(?=.{8,})/
},

但是,当我输入 *、$ 或 % 字符作为密码输入时,没有给出错误消息。任何帮助,将不胜感激。 谢谢。

你并没有真正限制用户的输入选项,你的模式说: 从字符串的起始位置开始,检查是否后面跟着小写字母,然后检查后面是否跟着大写字母,然后是数字,然后是一些符号。

没有任何限制用户输入的内容。因为 .* 将匹配任何不是行终止符(\n、\r 等)的字符。

你应该尝试这样的事情:/^([-\w!@#+]+){8,}$/
这里 \w 数学运算 a-z、A-Z、0-9 和下划线。

在此处测试正则表达式:https://regex101.com/r/TINm56/1