Javascript正则如何允许所有非英文字母、连字符、下划线并屏蔽其余字符
JavaScript 正则实现方案
符合需求的正则如下,支持所有语言的字母(包含带重音字符、中文)、连字符、下划线,禁止数字和特殊字符:
// 匹配规则:整个字符串仅允许 Unicode 字母、下划线、连字符,开启Unicode模式 const isValid = (str) => /^[\p{L}_-]+$/u.test(str);
测试结果
- 允许匹配的用例返回
true:ab_c、åb-ç、的å - 禁止匹配的用例返回
false:å!_、å123、!_!
原代码错误说明
之前的写法存在两处核心问题:
- 错误使用反向字符集
[^xxx],逻辑变成匹配「不在指定范围内的字符」,和需求相反 - 字符集内包含
\u0000-\u007F全ASCII范围,反而把合法的英文大小写字母等字符排除,同时没有覆盖到非ASCII的多语言字母范围
内容的提问来源于stack exchange,提问作者user14475872
相关产品推荐
相关产品推荐

