我有一个字符串,我想找到“ 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);
具有单个替换并关闭哈希表的方法。
var string = "aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc",
result = string.replace(/[ac]/g, (h => c => h[c] ? c : (h[c] = '*'))({}));
console.log(result);
您可以将捕获组用于除第一个序列以外的所有a或c序列,并用'* $ 1'替换它们($ 1是捕获组的replacement pattern:]
const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`;
const result = str.replace(/[ac]([ac]+)/g, '*$1');
console.log(result);