如何在Jest测试中正确检测URL中的非法符号(含斜杠)?
解决Jest检测URL非法符号的正则语法错误
你的问题出在两个核心点上:
- 正则里的斜杠
/没转义:它是正则表达式的分隔符,要匹配实际的/必须写成\/ - 正则里
|两边加了空格:这些空格会被当成要匹配的字符,导致没法正确检测不带空格的非法符号
另外,用正则字符集[]来包含所有非法符号会更简洁,不用写一堆冗余的|。
修正后的测试代码可以写成这样:
test('check url has no unwanted symbols', () => { const testOne = 'https://www.mytest&website.com'; // 用字符集匹配任意非法符号 expect(testOne).not.toMatch(/[&<>"'\/]/); });
如果你想保留原有的|写法,修正后是这样:
test('check url has no unwanted symbols', () => { const testOne = 'https://www.mytest&website.com'; expect(testOne).not.toMatch(/&|<|>|"|'|\/$/); });
字符集写法的逻辑很直接:[&<>"'\/]表示匹配其中任何一个字符,只要URL里包含这些符号中的任意一个,not.toMatch就会触发测试失败,完全符合你的检测需求。
内容的提问来源于stack exchange,提问作者ericoder
相关产品推荐
相关产品推荐

