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

Jest测试中匹配含/的字符串出现正则语法错误该如何解决?

问题原因

报错是因为正则字面量中/是默认的边界符,同时(、)是正则的特殊功能字符,未做转义时会被JavaScript引擎识别为正则语法结束标记/特殊逻辑符,从而抛出非法标志位错误。

解决方法

你可以任选以下任意一种方案修复:

  • 方案1:转义正则中的特殊字符
    把正则内的/、(、)分别用反斜杠\转义即可,修改后的测试代码如下:
    test('Local date time format - Europe no UK', () => {
      const date = '2021-08-26T08:06:14Z';
      const timezone = 'Europe/Berlin';
    
      render(
        <DateFormatter
          dateTime={date}
          timeZone={timezone}
          variant="localDateTime"
        />,
      );
      expect(screen.getByText(/26 Aug 2021, 8:06 \(Europe\/Berlin\)/)).toBeVisible();
    });
    
  • 方案2:直接使用精确字符串匹配(更简单,推荐)
    如果不需要正则的模糊匹配能力,直接给getByText传入字符串参数即可,完全不需要处理转义问题:
    expect(screen.getByText('26 Aug 2021, 8:06 (Europe/Berlin)')).toBeVisible();
    
  • 方案3:使用RegExp构造函数创建正则
    如果需要动态生成匹配规则,也可以通过构造函数创建正则,注意字符串内的反斜杠需要双重转义:
    const matchPattern = new RegExp('26 Aug 2021, 8:06 \\(Europe\\/Berlin\\)')
    expect(screen.getByText(matchPattern)).toBeVisible();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:05