简体   繁体   English

Javascript替换具有匹配值的字符串的一部分

[英]Javascript replace part of string that have matched value

I have this string and i need to remove the AND clause that match a value.我有这个字符串,我需要删除与值匹配的 AND 子句。 Ex: RHID = '540' AND SEQ LIKE '%44%' AND NR_DOCUMENTO LIKE '%999%'例如: RHID = '540' AND SEQ LIKE '%44%' AND NR_DOCUMENTO LIKE '%999%'

I need to remove AND NR_DOCUMENTO LIKE '%999%' if value is '%999%'.如果值为 '%999%',我需要删除AND NR_DOCUMENTO LIKE '%999%' '%999%'。 I need to remove AND SEQ LIKE '%44%' if value is '%44%'.如果值为 '%44%',我需要删除AND SEQ LIKE '%44%' '%44%'。

Note: The AND query part is dynamic and may have different things so it is more like find the value and remove backwards to AND注意:AND 查询部分是动态的,可能有不同的东西,所以它更像是找到值并向后删除到 AND

You may try this:你可以试试这个:

AND(?=(?:(?!AND).)*'%(?:44|999)%').*?LIKE\s+'%.*?%'

Regex Demo正则表达式演示

 const regex = /AND(?=(?:(?!AND).)*'%(?:44|999)%').*?LIKE\\s+'%.*?%'/gim; const str = `'540' AND sEQ LIKE '%44%' AND NR_DOCUMENTO LIKE '%45%' AND bla bla bla LIKE '%999%'`; const result = str.replace(regex,``); console.log(result);

This should do the trick:这应该可以解决问题:

var string = "RHID = '540' AND SEQ LIKE '%44%' AND NR_DOCUMENTO LIKE '%999%'";

function replaceIt (valueSEQ, valueLIKE) {
  return string.replace(" AND SEQ LIKE '%" + valueSEQ +"%'", "")
               .replace(" AND NR_DOCUMENTO LIKE '%" + valueLIKE + "%'", "");
}

console.log( replaceIt(44, 999) );

 var string = "RHID = '540' AND SEQ LIKE '%44%' AND NR_DOCUMENTO LIKE '%999%'"; function replaceIt (valueSEQ, valueLIKE) { return string.replace(" AND SEQ LIKE '%" + valueSEQ +"%'", "") .replace(" AND NR_DOCUMENTO LIKE '%" + valueLIKE + "%'", ""); } console.log( replaceIt(44, 999) );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM