当前位置: 首页 > 面试题库 >

用Javascript中的大写字母替换正则表达式捕获组

程招
2023-03-14
问题内容

我想知道如何用JavaScript中的大写字母替换捕获组。这是到目前为止我没有尝试过的工作的简化版本:

> a="foobar"
'foobar'
> a.replace( /(f)/, "$1".toUpperCase() )
'foobar'
> a.replace( /(f)/, String.prototype.toUpperCase.apply("$1") )
'foobar'

您能解释一下这段代码有什么问题吗?


问题答案:

您可以将函数传递给replace

var r = a.replace(/(f)/, function(v) { return v.toUpperCase(); });

说明

a.replace( /(f)/, "$1".toUpperCase())

在此示例中,您将字符串传递给replace函数。因为您使用的是特殊的替换语法 ($ N捕获第N个捕获),所以
您只是赋予了相同的值。toUpperCase实际上,这是骗人的,因为您仅使替换字符串大写
(这是没有意义的,因为$1字符没有大写,因此返回值仍然是"$1"

a.replace( /(f)/, String.prototype.toUpperCase.apply("$1"))

信不信由你,这个表达的语义是完全一样的。



 类似资料:
  • 问题内容: 有什么方法可以用捕获组的已修改内容替换正则表达式? 例: 我想用$ 1乘以3代替所有出现的情况。 编辑: 看起来好像出了点问题:( 如果我用 引发IllegalStateException:找不到匹配项 但 工作正常,但我不能更改$ 1 :( 问题答案: 要获得第一场比赛,请使用。之后,你可以用来引用此第一个匹配项,并将所有匹配项替换为第一个匹配值乘以3。 如果你想将每个匹配项替换为该

  • 问题内容: 我正在尝试将在字符串中重复两次的大写字母的所有实例替换为小写字母的单个实例。我正在使用以下正则表达式,并且能够匹配重复的大写字母,但是我不确定如何使要替换的字母变为小写。 如何使“ \ 1”小写?我不应该使用正则表达式来执行此操作吗? 问题答案: 传递一个函数作为参数。将传递给此函数,并给出第一个带括号的子组: 编辑 是的,您应该使用而不是为了 _不_匹配,例如。 给出:

  • 问题内容: 假设我要更改为。 通过我可以做到这一点,如下所示: 如何在Python中进行类似的替换?我试过了: 问题答案: 您需要转义反斜杠: 或者,您可以像使用正则表达式一样使用原始字符串:

  • 假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/

  • 我正在尝试使用正则表达式将大写字母替换为相应的小写字母。因此 变成 在Sublime的文本中。如何在同时包含小写和大写字母的单词中使用小写字母?所以它会影响维纳斯,而不是维纳斯。

  • 问题内容: 据我所知,JavaScript中没有所谓的捕获组。获得类似功能的替代方法是什么? 问题答案: ECMAScript 2018将命名捕获组引入了JavaScript正则表达式中。 例: 如果您需要支持较旧的浏览器,则可以使用命名捕获组来处理普通(编号)捕获组,而只需要跟踪编号-如果捕获组中的捕获组顺序很麻烦,正则表达式更改。 我能想到的命名捕获组只有两个“结构”优点: 在某些正则表达式中