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

如何用正则校验目标字符首次出现后后续字符均为该目标字符

正则实现方案

你需要的正则可以直接按照你描述的规则构造:整个字符串由「0n个非目标字符」+「0n个目标字符」组成,实现代码如下:

// 先实现正则特殊字符转义,避免目标字符是.、*等元字符时匹配异常
const escapeRegExp = (char) => char.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');

const validate = (string, targetChar) => {
  const escapedTarget = escapeRegExp(targetChar);
  const reg = new RegExp(`^[^${escapedTarget}]*${escapedTarget}*$`);
  return reg.test(string);
};

正则逻辑说明

  • ^ 匹配字符串起始位置,确保从开头就符合规则
  • [^${escapedTarget}]* 匹配0个或任意多个不等于目标字符的字符,对应你定义的第一部分子串
  • ${escapedTarget}* 匹配0个或任意多个目标字符,对应你定义的第二部分子串
  • $ 匹配字符串结束位置,确保末尾没有其他非目标字符

测试验证

以目标字符为.为例,所有测试用例匹配结果完全符合预期:

  • 空字符串、"2"、"."、"2.."、"...." 均匹配返回true
  • "..2"、"2.2"、"2.2." 均不匹配返回false

效率优势

该实现只需要一次正则匹配即可完成校验,相比原实现的多次字符串切割、统计操作,性能更好,代码也更简洁。


内容的提问来源于stack exchange,提问作者Gergő Horváth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:06:01