JavaScript正则表达式替换无效,但字符串替换有效

13

我正在使用jQuery并尝试编写一个模式替换,但它不起作用。 我有以下代码:

var $featured_rewrite = $('#featured').not('.slideshow');
$featured_rewrite.children().attr('href', $featured_rewrite.find('img').attr('src').replace('/-[0-9]+x[0-9]+\./i', '.'));

我不明白为什么这样的代码会生效:

.replace('-500x277.', '.')

但不包括这个,我甚至使用工具检查过它,确保它是有效的并且可以工作:

.replace('/-[0-9]+x[0-9]+\./i', '.')
1个回答

74

'/-[0-9]+x[0-9]+\./i' 是一个字符串。

/-[0-9]+x[0-9]+\./i 是一个正则表达式。

"hi".match('/hi/')  // returns null
"hi".match(/hi/)    // returns ["hi"]

编辑:另外,只是为了明确,除了引号之外,你的正则表达式没有任何问题。如果需要替换多个匹配项,您可以考虑使用/g(即在末尾使用/gi),但只有这一点。


4
在这里之前,我浪费了一个小时的时间进行试验和重新阅读手册,从未注意到缺少“'”的存在。 - Sandman4
3
哈哈,我花了30分钟尝试弄清楚为什么我的“/regex/”无法工作...... - Antoniossss
这就是为什么我们喜欢 JavaScript :D 几乎其他每种语言都会将正则表达式作为字符串来处理 ;) - dognose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接