为什么我在 JavaScript 中的 RegExp 会给出这个结果?

李数控

我有一个关于 '(x)' RegExp 模式的问题。这是我的代码。

// normal code:
console.log('bar foo'.replace( /(...) (...)/, '$1 $2' )) //foo bar

它匹配 3 个长度的 str 并使每个成为组,并改变它们的位置,这是我的理解。

  console.log('bar foo'.replace( /(...) (..)/, '$1' )) //baro

为什么这个 RegExp 匹配“bar”和“o”?它如何为结果带来“o”?

我认为结果应该只是'bar',因为$1,只能匹配一种模式。

菲利克斯·克林

/(...) (..)/ 匹配以下字符:

bar foo
^^^^^^

它匹配三个字符,后跟一个空格,后跟两个字符。这些字符被替换为bar

bar fo => bar

现在我们将此替换应用于整个字符串:

bar foo => baro
      ^       ^

.replace只替换与表达式匹配的字符。所有其他字符都留在原地。o你在输出看到的是最后ofoo,它不是由正则表达式感动。如果那是您的想法,它不会被捕获捕获。

console.log('fast food'.replace(/foo/, 'bar'));

我们可以通过在 之后添加另一个字符来轻松证明这一点$1

console.log('bar foo'.replace( /(...) (..)/, '$1-' )) // bar-o

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这个constexpr函数在gcc中的不同情况下会给出不同的结果?

为什么将Javascript RegExp测试函数与标志一起使用时每次都会给出不同的结果?

为什么这段JavaScript会给出不同的结果?

对于具有一个或多个元素的数组,为什么JavaScript“数组中的长度”会给出不同的结果?

为什么我的javascript regex.test()会给出交替的结果

为什么这个投影会给出错误的结果?

为什么Ruby中的这个布尔语句会给出错误?

javascript:如果缺少原型,为什么obj.constuctor.name会给出2个不同的结果?

我不明白为什么会给出这个输出?

(?:*)在javascript RegExp中是什么意思

为什么 ocaml 中函数定义的替代方案会给出不同的结果?

为什么 MATLAB 中的日期时间会给出奇怪的结果?

为什么这个Szudzik典雅配对会给出错误的结果?

为什么在 Javascript 中对数组进行排序和反转会给出所需的输出

为什么我的if语句在React中总是给出相同的结果?

RegExp / \ c /在JavaScript中

为什么在javascript中我不能在这个函数中创建对象?

在 JavaScript 中,为什么这个全局变量在我的函数中未定义?

为什么Excel VBA中的Bankers Rounding函数根据小数位数会给出不同的结果?

为什么我不能在JSFiddle中执行这个简单的JavaScript测试程序?

为什么我不能在 Javascript 中访问这个对象的元素?

为什么这个 Javascript 函数没有打印到我的 HTML 文档中?

在这个最小的示例中,为什么gbm()与h2o.gbm()给出的结果不同?

为什么此Javascript RegExp返回true?

为什么RegExp()不等于JavaScript中显式定义的正则表达式?

为什么JavaScript中的RegExp的matchAll与其他方法如此不同?

为什么HTML5 checkValidity()与JavaScript regexp.test()返回不同的结果?

为什么调用 python 列表的 [-1] 会给出这个输出?

为什么这个程序会给出“被零除”错误?