Regex在Javascript .split()上不匹配,但在测试工具上匹配

Regex isn't matching on Javascript .split() but does match on testing tool

本文关键字:测试工具 不匹配 split Regex Javascript      更新时间:2023-09-26

我有这个代码。我正在尝试匹配。mono-50,其中50可以是任何数字。

imageUrl = 'http://example.com/media/image.mono-50.png';
imageUrlSplit = imageUrl.split('/.mono-'d+/');
console.log(imageUrlSplit);

不匹配,但在我的测试工具regexr.com上匹配

http://regexr.com/3e55b

我对它做了许多变化,包括以下内容:

.split('/.mono'-'d+/');
.split('/'.mono'-'d+/');
.split('/.mono-'d+/g');
.split('/.mono'-'d+/g');
.split('/'.mono'-'d+/g');

所有这些都可以在工具中工作,但在Javascript中没有。我是否误解了.split()对待正则表达式的方式?

我看到过这个问题,但是它并没有帮助我解决这个问题。

Javascript拆分正则表达式问题

您需要使用regex文字表示法(当regex文字放在引号内时,它成为常规字符串文字,split使用该文本作为文字字符串,而不是模式)和转义点,因为regex模式中未转义的点匹配任何字符(换行符除外):

imageUrlSplit = imageUrl.split(/'.mono-'d+/);
                               ^^^        ^

看到演示:

imageUrl = 'http://example.com/media/image.mono-50.png';
imageUrlSplit = imageUrl.split(/'.mono-'d+/);
console.log(imageUrlSplit);