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

如何创建符合空格与下划线特定规则的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:11:03