我有一个要查找“ a”字符和第一个“ c”字符并用“ *”字符替换的字符串,但是正则表达式查找所有“ a”和“ c”字符,我不知道该怎么做它。
这是我的代码:
var pattern=/[a][c]/g; //here my pattern
var str1="aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc";
var rep=str1.replace(pattern,"*");
$("p").html(rep);
答案 0 :(得分:1)
您需要两次替换,因为一个替换一个a
或c
,具体取决于字符串中的第一个匹配项。
var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc",
result = string
.replace(/a/, '*')
.replace(/c/, '*');
console.log(result);
一种方法,该方法具有单个替换和对哈希表的关闭。
var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc",
result = string.replace(/[ac]/g, (h => c => h[c] ? c : (h[c] = '*'))({}));
console.log(result);
答案 1 :(得分:0)
您可以将捕获组用于除第一个序列以外的所有a或c序列,并将它们替换为'* $ 1'($ 1是捕获组的replacement pattern):
const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`;
const result = str.replace(/[ac]([ac]+)/g, '*$1');
console.log(result);