我有一个正则表达式,它在 regex101 中运行良好,但在 javascript/jquery 中运行不正常,我认为是因为 ?<=
表达。如果我省略这部分,它会起作用,但也会替换前面的字符串。我只想替换 URL 中的数字,或者换句话说,替换“foo/”和“/bar”之间的所有数字
我的代码:
<a id="link" href="http://www.domain.com/foo/1234/bar/">Some anchor text</a>
<button>Click</button>
$("button").click(function() {
$('#link').attr('href', function(index, myhref) {
return myhref.replace(/(?<=foo\/)(\d+)(?=\/bar)/,'newnumber');
});
});
我如何修改我的正则表达式才能替换数字?
最佳答案
JavaScript 不支持正向或负向回顾。但是,您可能想 try catch 其组并在替换字符串时使用它们。
例如
var str = 'http://www.domain.com/foo/1234/bar/';
var myvar = 'newnumber';
var newStr = str.replace(/(foo\/)(\d+)(\/bar)/i, '$1' + myvar + '$3');
// Returns "http://www.domain.com/foo/newnumber/bar/"
(foo\/)
是第一组,匹配foo/
(\d+)
是第二组,匹配一个或多个任意数字。(\/bar)
是第三组,匹配/bar
'$1'+ myvar +'$3'
返回第一组
+myvar
+第三组
的串联>
关于javascript - 正则表达式匹配两个字符串之间的数字在JS中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402735/