gpt4 book ai didi

JavaScript RegEx 除动态系列之外的所有字符

转载 作者:行者123 更新时间:2023-11-29 23:45:34 25 4
gpt4 key购买 nike

因此,我正在从事一个开源项目,以此来扩展我对 JavaScript 的了解,并创建了一个实用程序来动态处理字符串,并将特定的事件替换为其他字符串。

这方面的一个例子如下:

jdhfkjhs${c1}kdfjh$%^%$S654sgdsjh${c20}SUYTDRF^%$&*#(Y

假设我选择字符“#”,RegExp 将其处理为:

########${c1}####################${c20}###############

我面临的问题是我的 RegExp /[^\$\{c\d\}]/g 也匹配 RegExp 中的任何字符,所以字符串如_,met$$$$$1234{}cccgg. 将返回为 #####$$$$$1234{}ccc###

有没有一种方法可以用 JavaScript 捕获这样一个动态组,或者我是否应该找到一种替代方法来实现我正在做的事情?


对于某些上下文,可以找到项目代码here .

最佳答案

您可以匹配该组并捕获它以便稍后恢复,并且只匹配任何字符(如果没有换行符则使用 . 或使用 [^]/[\s\S] ):

var rx = /(\${c\d+})|./g;
var str = 'jdhfkjhs\${c1}kdfjh\$%^%\$S654sgdsjh\${c20}SUYTDRF^%\$&*#(Y';
var result = str.replace(rx, function ($0,$1) {
return $1 ? $1 : '#';
});
console.log(result);

详细信息:

  • (\${c\d+}) - 第 1 组:文字 ${c子字符串,然后是 1 位以上的数字和文字 }
  • | - 或者
  • . - 除换行符以外的任何字符(或任何字符,如果您使用 [^][\s\S])。

在替换中,$0代表整场比赛,$1代表第一个捕获组的内容。如果$1被设置,它被重新插入到结果字符串中,否则,char 被替换为 # .

关于JavaScript RegEx 除动态系列之外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com