You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NSIS环境下禁止密码含双字节字符仅允许指定ASCII的正则实现问题

NSIS环境下禁止双字节字符的密码正则修改方案

你之前的校验逻辑漏了限定所有输入字符必须在允许的单字节范围内,原有正则的.可以匹配任意双字节字符,所以只要满足复杂度要求哪怕混了双字节也会通过。你不需要反转逻辑,直接把通配符替换为允许的字符范围即可,适配NSIS的正则限制,无需额外函数。

最终可用正则

^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9#?!$%^&*@-])[A-Za-z0-9#?!$%^&*@-]{8,128})$

规则说明

  • 把原有规则里的.{8,128}替换为[A-Za-z0-9#?!$%^&*@-]{8,128},直接限定所有字符只能是你允许的大小写字母、数字、指定特殊符号,上述字符全部属于单字节ASCII范围,只要出现任何双字节字符都会直接匹配失败
  • 保留了你原有全部复杂度要求:必须同时包含小写字母、大写字母、数字/指定特殊符号,长度8-128位
  • 去掉了原有正则末尾多余的第二个$,避免匹配异常

如果需要兼容允许其他ASCII可打印符号(不在你指定的特殊符号列表里的),可以用下面的版本,增加负向预查禁止所有非ASCII字符:

^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9#?!$%^&*@-])(?!.*[^\x00-\x7F]).{8,128})$

这里的(?!.*[^\x00-\x7F])会拦截所有ASCII范围之外的字符,包括所有双字节字符。

内容的提问来源于stack exchange,提问作者RogerDodger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:51:02