Angular JS正则表达式替换

Angular JS regex replace

本文关键字:替换 正则表达式 JS Angular      更新时间:2023-09-26

这个问题是在Regex匹配整个单词包括空格和句号

我最终使用的正则表达式是(<(p|li)'b[^<>]*>[^<>'n]*)'b(Cat|Dog|Fish)'b([^<>'n]*<'/'2>)

现在,我需要用其他HTML替换匹配的单词。

Vks,谁帮助我建立这个正则表达式建议我可以访问$3变量来获得匹配的单词。但我似乎做不到。(https://regex101.com/r/oC5rY5/12 javascript)

我正试图在Angular JS中做替换,这是我不太熟悉的东西。

html.replace(regex, function(fullMatch, match) {
    if (angular.isString(match)) {
        var abc = fullMatch.length > match.length ? fullMatch[0] : '';
        //Custom function to fetch data based on the matched word.
        var obj = $scope.getMoreInfo(match);
        if (angular.isObject(obj)) {
            return abc + '<div class="test123" url="' + obj.Url + '" text="' + match + '">' + match + '</div>';
        }
    }
    return fullMatch;
});

我如何在这里访问$3 ?match不返回匹配的单词。尝试使用match[3],但也不起作用。

请注意,我的替换不只是一个字符串,但整个页面的HTML,所以它需要递归。

您可以通过位置参数在replace函数中获得匹配的组。第一个参数是匹配,然后p1, p2 and so on是匹配的组。在你的例子中,你可以像这样得到第三个匹配。

html.replace(regex, function(match, p1, p2, p3, p4) {
    console.log(p3);
});

更多信息请参阅此处的参考https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter