首页 > 解决方案 > 跳过字符串的一部分并用正则表达式替换匹配

问题描述

我需要替换字符串的一部分,但我的代码替换了整个字符串,我只想根据键名替换 = 等号之后的文本。我需要正则表达式来跳过关键字 value= 然后替换它等于的值。我有一部分在正则表达式中工作,但它完全匹配。

    /(?:value\=)([A-Za-z{}": ',&-=\\]+)$/

name = test
key = value
value = {
  "first": 'John',
  'Last': 'Doe'
}
value = first = John & last = Doe

测试仪

var data = "value=first_name=John&last_name=Doe;"
  .replace(/^(?:value\=)([A-Za-z{}": ',&-=\\]+)$/g, 'first_name=Homer&last_name=Simspon');

console.log(data);

/*     
 data = value=first_name=John&last_name=Doe
 which should be 
 value=first_name=Homer&last_name=Simspon
*/

标签: javascript

解决方案


您可以使用捕获组、$1、$2 等。我在下面使用了通配符 .* 正则表达式,但您可能会使其更具体到您希望看到的键值对。

var data = "value=first_name=John&last_name=Doe;"
  .replace(/(value\=).*(;)/g, '$1first_name=Homer&last_name=Simspon$2');

console.log(data);

/*     
 data = value=first_name=John&last_name=Doe
 which should be 
 value=first_name=Homer&last_name=Simspon
*/


推荐阅读