我可以显示正常字符而不是正则表达式

时间:2015-10-16 09:44:56

标签: javascript regex

这是我的代码:

$scope.currentTextClass = $scope.currentText1.replace(
    test5 = /<img .* \/>/g,
    "<div class=\"container\">" + test5.source + "</div>"
);

但是test5.source的字符串是"<img .* \/>"。我想要的是完整的img标签而不是原始正则表达式。

是否可以退回原始img代码?

1 个答案:

答案 0 :(得分:2)

问题是正则表达式的<img .* \/>。所有source返回都是没有/或标志的正则表达式(在这种情况下为g)。

  

source属性返回一个包含regexp对象源文本的String,它不包含两侧的两个正斜杠和任何标志。

     

- MDN's notes on RegExp.prototype.source

如果您想要访问完整匹配项,可以提供一个函数作为replace调用的第二个参数。这本身有3个参数传递给它:匹配,匹配的位置和全文。

第一个参数是你想要的:

$scope.currentTextClass = $scope.currentText1.replace(
    /<img .* \/>/g,
    function(match) {
        return "<div class=\"container\">" + match + "</div>";
    }
);