[英]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);
您需要兩個替換,因為一個替換a
或c
,具體取決於字符串中的第一次出現。
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.