正则表达式与Javascript .split()不匹配,但在测试工具上匹配

时间:2016-08-31 22:13:17

标签: javascript regex split

我有这个代码。我想在.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 split regex question

1 个答案:

答案 0 :(得分:2)

您需要使用正则表达式文字符号(当正则表达式文字放在引号内时它变成常规字符串文字,而split将此文本用作文字字符串,而不是模式)和转义点,因为正则表达式模式中未转义的点匹配任何字符(但换行符):

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

参见演示:



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