查找正则表达式中的第一个匹配字符

时间:2019-11-09 18:25:51

标签: javascript regex regex-greedy regular-language

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

这是我的代码:

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

const str = `aaaaaaaaaabbbbbbaaaaaaaaaabbbccccccccccbbbbbbbbccc`;

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

console.log(result);