[英]Javascript regex replace string on string
此正則表達式在匹配模式后刪除所有內容,我只需要刪除匹配模式和值。
pattern = /(?<=ANO=).*/
obj.where_str = " AND EMPRESA='CMIP' AND ANO='2019' AND MES='1' AND RHID='4207' AND TO_CHAR(DT_ADMISSAO,'YYYY-MM-DD')='2001-08-01' AND ESTADO='A'"
obj.where_str = obj.where_str.replace(pattern, "'" + fieldValue + "'");
提前致謝
我的猜測是,也許您正在嘗試編寫類似於以下內容的表達式:
\bANO='([^']*)'
要替換的所需值在捕獲組中:
([^']*)
const regex = /\bANO='([^']*)'/gm; const str = ` AND EMPRESA='CMIP' AND ANO='2019' AND MES='1' AND RHID='4207' AND TO_CHAR(DT_ADMISSAO,'YYYY-MM-DD')='2001-08-01' AND ESTADO='A'`; const subst = `ANO='Another_value_goes_here'`; const result = str.replace(regex, subst); console.log(result);
如果您想簡化/修改/探索表達式,它已在regex101.com的右上角面板上進行了解釋。 如果您願意,您還可以在此鏈接中觀看它如何與一些示例輸入匹配。
jex.im可視化正則表達式:
您的代碼可能如下所示:
const regex = /\bANO='([^']*)'/g; const str = ` AND EMPRESA='CMIP' AND ANO='2019' AND MES='1' AND RHID='4207' AND TO_CHAR(DT_ADMISSAO,'YYYY-MM-DD')='2001-08-01' AND ESTADO='A'`; const fieldValue = 2020; const subst = 'ANO=\''.concat(fieldValue, "'"); const result = str.replace(regex, subst); console.log(result);
另一種選擇可能是:
(?<=\bANO=')\d{4}
我猜/假設積極的后視不會有問題。
const regex = /(?<=\bANO=')\d{4}/g; const str = ` AND EMPRESA='CMIP' AND ANO='2019' AND MES='1' AND RHID='4207' AND TO_CHAR(DT_ADMISSAO,'YYYY-MM-DD')='2001-08-01' AND ESTADO='A'`; const fieldValue = 2020; const result = str.replace(regex, fieldValue); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.