如何创建符合空格与下划线特定规则的JavaScript正则表达式?
符合要求的JavaScript正则表达式
这里是满足所有条件的正则表达式:
const regex = /^(?:$|[\da-zA-Z]+|[\da-zA-Z]{3,}[\s_][\da-zA-Z]+|[\da-zA-Z]{3,}[\s_][\da-zA-Z]+[\s_][\da-zA-Z]{4,})$/;
规则拆解
我们把所有允许的情况拆分为4种分支(用|分隔),整体通过^和$确保匹配整个字符串:
$:匹配空字符串(满足条件1)[\da-zA-Z]+:匹配纯字母数字的非空字符串(满足条件2)[\da-zA-Z]{3,}[\s_][\da-zA-Z]+:匹配含1个特殊字符的场景:[\da-zA-Z]{3,}:保证第一个特殊字符前至少有3个字母数字(满足条件6)[\s_]:仅允许空格或下划线作为特殊字符(满足条件3)[\da-zA-Z]+:确保特殊字符后至少有1个字母数字,同时避免连续特殊字符(满足条件4)
[\da-zA-Z]{3,}[\s_][\da-zA-Z]+[\s_][\da-zA-Z]{4,}:匹配含2个特殊字符的场景:- 开头的
[\da-zA-Z]{3,}[\s_]满足第一个特殊字符的位置要求(条件6) - 中间的
[\da-zA-Z]+避免两个特殊字符连续出现(条件4) - 结尾的
[\s_][\da-zA-Z]{4,}保证第二个特殊字符后至少有4个字母数字(条件7)
- 开头的
- 所有分支天然限制了特殊字符最多出现2次(满足条件5)
示例验证
有效示例
""(空字符串):匹配"12345"(纯字母数字):匹配"123_ABC"(1个特殊字符,前有3个数字):匹配"123_ABC_ERRR"(2个特殊字符,第二个后有4个字母):匹配
无效示例
"12__"(连续下划线):不匹配(违反条件4)"123_VBV_HH_"(第二个特殊字符后不足4个字符,且特殊字符超过2个):不匹配(违反条件5、7)"12_AB"(第一个特殊字符前只有2个字符):不匹配(违反条件6)"123_AB_YYY"(第二个特殊字符后只有3个字符):不匹配(违反条件7)
内容的提问来源于stack exchange,提问作者Magesh Maggi
相关产品推荐
相关产品推荐

