如何修改正则表达式以限制仅允许指定特殊字符并满足输入框校验规则
正则表达式修改方案
原始校验规则梳理
- 内容最少14个字符
- 至少包含1个大写字母(A-Z)
- 至少包含1个小写字母(a-z)
- 至少包含1个数字(0-9)
- 仅可使用指定特殊符号:
+=!@#$%^&*,禁止使用其他特殊字符
问题原因
你当前使用的正则中末尾的.{14,}代表匹配14个以上的任意非换行字符,没有限制字符范围,所以会允许其他未指定的特殊字符。
修改后正则
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[+=!@#$%^&*])[a-zA-Z0-9+=!@#$%^&*]{14,}$
修改说明
- 去掉了原正则中多余的
(?=\S+$)断言:新的字符范围本身就不包含空白字符,无需额外校验 - 将原有的
.{14,}替换为[a-zA-Z0-9+=!@#$%^&*]{14,}:限定所有字符只能是大小写字母、数字、指定特殊符号三类,完全禁止其他字符输入
校验效果验证
- 符合所有原始必填规则(长度、大写、小写、数字、指定特殊符号至少一个)
- 输入
~、?、/等未指定的特殊符号时会直接校验不通过
内容的提问来源于stack exchange,提问作者ONE_FE
相关产品推荐
相关产品推荐

