首先找到正则表达式中的字符

问题描述 投票:0回答:1

我有一个字符串,我想找到“ a”字符和第一个“ c”字符并替换为“ *”字符,但是正则表达式找到所有的“ a”和“ c”字符,我不知道该怎么做。

这里是我的代码:

var pattern=/[a][c]/g; //here my pattern
var str1="aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc";
var rep=str1.replace(pattern,"*");
$("p").html(rep);
javascript regex regex-greedy regular-language
1个回答
1
投票

您需要两次替换,因为一个替换一个ac,具体取决于字符串中的第一个匹配项。

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);

0
投票

您可以将捕获组用于除第一个序列以外的所有a或c序列,并用'* $ 1'替换它们($ 1是捕获组的replacement pattern:]

const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`;

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

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.