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

正则表达式匹配时如何忽略文本中间的短横线(连字符)

正则匹配忽略连字符的两种实现方案

方案1:预处理待匹配文本(最推荐)

直接先把待匹配字符串中所有的连字符删除,再用你原本写的无连字符正则匹配即可,逻辑简单通用,所有编程语言都支持:

  • 示例逻辑:
    待匹配文本chug-jug → 替换所有-为空得到chugjug → 用正则/chugjug/i匹配,匹配成功
  • JavaScript示例代码:
    const originStr = 'Jack-O';
    const targetRegex = /jacko/i;
    // 先移除所有连字符再匹配
    const isMatch = targetRegex.test(originStr.replace(/-/g, ''));
    // 输出结果为 true
    

方案2:直接生成适配连字符的正则

如果不允许修改原文本,可以把你要匹配的无连字符字符串,每个字符之间插入-*(表示允许出现0个或多个连字符),生成新的正则直接匹配原文本:

  • 示例转换规则:
    原匹配关键词ino → 转换为i-*n-*o → 最终正则为/i-*n-*o/i,可直接匹配I-no
  • 动态生成正则的工具函数(JavaScript示例):
    function buildHyphenIgnoreRegex(keyword, flags = 'i') {
      // 先转义正则特殊字符避免报错
      const escaped = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
      // 每个字符之间插入允许0+连字符的规则
      const regexStr = escaped.split('').join('-*');
      return new RegExp(regexStr, flags);
    }
    
    // 测试用例
    const regex1 = buildHyphenIgnoreRegex('jacko');
    console.log(regex1.test('Jack-O')); // true
    const regex2 = buildHyphenIgnoreRegex('chugjug');
    console.log(regex2.test('chug-jug')); // true
    

内容的提问来源于stack exchange,提问作者tan shi yu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:54:03