javascript - 正则表达式匹配两个字符串之间的数字在JS中不起作用

标签 javascript regex

我有一个正则表达式,它在 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/

相关文章:

javascript - 使用正确的月份格式化 Highcharts 日期

javascript - HTML5 history API popstate 事件返回错误数据

javascript - 在 Karma 中隐藏 browserstack key

python - 从文本文件中检索随机预格式化的文本

java - 需要正则表达式帮助

javascript - 替换 unicode 空格字符

javascript - React Router - 从处理程序到 header 的 Prop

FireFox 中的 Javascript CSV 文件下载问题,可在 Chrome 中使用

python - 分割数据帧的行并将它们作为单独的行存储在同一数据帧中

Python正则表达式按数字和大写字母拆分