簡體   English   中英

Javascript 正則表達式替換字符串上的字符串

[英]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}

我猜/假設積極的后視不會有問題。

正則表達式演示 2

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM