You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助编写TypeScript正则:字符串需以abcd_开头且符合字符限制

整合多条件的TypeScript正则验证方案

嘿,我来帮你把这几个验证条件完美整合到一个正则里!你已经搞定了开头匹配的部分,现在把剩下的规则加进去就行。

先拆解你的需求对应的正则规则

我们需要同时满足三个条件,逐个对应:

  • 必须以abcd_开头:用^abcd_锚定字符串开头
  • abcd_之后不能紧跟下划线:用负向前瞻(?!_)来确保前缀后面的第一个字符不是下划线
  • 仅允许字母、数字和下划线:用[a-zA-Z0-9_]*匹配后续的合法字符,再加上$锚定字符串结尾,避免出现非法字符

完整的正则表达式

把上面的规则组合起来,最终的正则是:

/^abcd_(?!_)[a-zA-Z0-9_]*$/

各部分详解

  • ^:标记字符串的起始位置
  • abcd_:强制要求字符串必须以这个固定前缀开头
  • (?!_):负向前瞻断言,检查前缀后的第一个字符不是下划线,直接排除abcd__xxx这类情况
  • [a-zA-Z0-9_]*:匹配0个或多个允许的字符(大小写字母、数字、下划线),*表示可以为空(如果你要求前缀后必须有内容,可以改成+
  • $:标记字符串的结束位置,确保整个字符串都符合规则,没有超出允许范围的字符

整合到你的TypeScript验证器里

替换你原来的验证逻辑,完整代码如下:

static myValidator(control) {
  if (control.value) {
    const validNameRegex = /^abcd_(?!_)[a-zA-Z0-9_]*$/;
    if (validNameRegex.test(control.value)) {
      return null; // 验证通过,返回null表示无错误
    } else {
      return { 'invalidName': true }; // 验证失败,返回自定义错误标识
    }
  }
  // 如果允许空值,这里返回null;如果要求必须输入,可返回错误
  return null;
}

测试案例参考

  • ✅ 符合要求的示例:abcd_user123abcd_Adminabcd_123_abc
  • ❌ 不符合要求的示例:abcd__test(前缀后紧跟下划线)、abcd-test(包含非法字符-)、test_abcd_(不是以abcd_开头)

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

火山引擎 最新活动