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

标签 javascript regex

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

(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/

相关文章:

javascript - Google reCAPTCHA float 通知未完全显示

javascript - 带有元素标记名的错误正则表达式?

java - 替换路径 url 占位符格式

regex - 应用程序脚本正则表达式 : SyntaxError: Invalid quantifier

c# - 用正则表达式替换部分单词

php - JavaScript语句执行

javascript - *ngFor 如何使用 Angular 2 中的模板变量?

javascript - unslider滑动图片问题

c# - 使用正则表达式在字符串中查找确切的字符

javascript - 如何使用 JavaScript 以非随机方式生成一定范围内的数字?