gpt4 book ai didi

JavaScript 正则表达式仅在特定字符后才替换值?

转载 作者:行者123 更新时间:2023-11-30 08:12:16 26 4
gpt4 key购买 nike

我试图想出一个正则表达式来搜索一个字符串并替换为新的字符集。我的字符串是这样的。

(Product=='Partnership - CT'&&State==CT)

在这里,我必须搜索状态键的 CT 值并替换为 'CT'(即添加单引号)。我在 JavaScript 中使用了以下正则表达式。

var expressionQuery = "(Product=='Partnership - CT'&&State==CT)";
val = 'CT';
expressionQuery.replace(new RegExp(val, "g"),"\'"+val+"\'" );

但这给出的输出为 (Product=='Partnership - 'CT''&&State=='CT')

预期输出:(Product=='Partnership - CT'&&State=='CT')

也就是说,我只想更改紧跟在==之后出现的CT实例。请帮我写一个表达式来解决这个问题。

最佳答案

更新:您不必在正则表达式中对“CT”进行硬编码。如果您知道“State”参数始终是两个字母的代码,您可以使用类似以下内容的任何 状态添加引号:

expressionQuery.replace(/State==([A-Z]{2})/g,"State=='$1'");

这表示要找到一个子字符串“State==”,后跟任意两个字母,然后在替换表达式中它有“$1”的地方,这意味着插入与括号中正则表达式部分匹配的任何内容。请注意,因为它专门查找“==”之后的字母,所以如果它们已经存在,则不会添加额外的引号。

还有我的原始答案,它只替换了指定的状态(无论是硬编码的还是由变量指示的):

您可以在“==”等上进行非捕获匹配,但我认为在搜索和替换文本中都包含“==”会更容易:

var expressionQuery = "(Product=='Partnership - CT'&&State==CT)",
val = "CT";

expressionQuery.replace(new RegExp("==" + val, "g"),"=='"+val+"'" );

或者您甚至可能希望在搜索中包含“State”,以防您以后有其他可能匹配的参数,例如“SomeOtherParam==CT”:

expressionQuery.replace(new RegExp("State==" + val, "g"),"State=='"+val+"'" );

请注意,如果单引号位于用双引号引起来的字符串中,则无需转义单引号。即,"'""\'" 的作用相同。

(另请注意,您的原始代码无效,因为您忘记在 expressionQuery 声明中的字符串两边加上引号。)

关于JavaScript 正则表达式仅在特定字符后才替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586010/

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