簡體   English   中英

在正則表達式中查找第一個匹配字符

[英]find first matches character in regular expression

我有一個字符串,我想查找“a”字符和第一個“c”字符並用“*”字符替換,但正則表達式查找所有“a”和“c”字符我不知道該怎么做。

這是我的代碼:

var pattern=/[a][c]/g; //here my pattern
var str1="aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc";
var rep=str1.replace(pattern,"*");
$("p").html(rep);

您需要兩個替換,因為一個替換ac ,具體取決於字符串中的第一次出現。

 var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc", result = string.replace(/a/, '*').replace(/c/, '*'); console.log(result);

一種在 hash 表上進行單次替換和關閉的方法。

 var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc", result = string.replace(/[ac]/g, (h => c => h[c]? c: (h[c] = '*'))({})); console.log(result);

我猜[ac]可能就足夠了:

 const regex = /[ac]/g; const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`; const subst = `*`; // The substituted value will be contained in the result variable const result = str.replace(regex, subst); console.log(result);


如果您想簡化/修改/探索表達式,它已在regex101.com的右上角面板上進行了解釋。 如果您願意,您還可以在此鏈接中觀看它如何與一些示例輸入匹配。


您可以將捕獲組用於除第一個以外的所有 a 或 c 序列,並將它們替換為 '*$1' ($1 是捕獲組的替換模式):

 const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`; const result = str.replace(/[ac]([ac]+)/g, '*$1'); console.log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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