从AngularJS中的长字符串中删除特定短语(替换函数+正则表达式?)

时间:2016-11-22 18:43:01

标签: javascript angularjs regex string replace

我目前正在学习Angular我遇到了转换某个长字符串的问题。

所以,这是我的div,有很多行,由ng-repeat生成:

http://pastebin.com/raw/bJqqUvpY

是的,我知道这很糟糕。我想要做的是从该字符串中删除所有不需要的ng属性和其他东西,因为我将通过ajax将这些数据传递给PHP。

这是我尝试做的事(角度):

    $scope.updateHtml = function() {    
    var testVal = angular.element('#sendHtml').val();
        testVal = testVal.replace(/ng-class="{'selected':selection.indexOf($index) != -1}"/g,"");
    $scope.sendHtml.html = testVal;
};

但它不起作用。也许是因为短语里面的引号,或者是它?

例如,这可以替换单个字母:

$scope.updateHtml = function() {
     var testVal = angular.element('#sendHtml').val();
     testVal = 'abcabcabc';
    testVal = testVal.replace(/b/g,"");
    $scope.sendHtml.html = testVal;
};

然后$scope.sendHtml.html就像它应该的'acacac'一样。 这可以用另一种RegEx来解决吗?我希望我能清楚地解释我的问题。我会感激任何帮助!

干杯!

2 个答案:

答案 0 :(得分:3)

转义点.,括号()和美元$符号。

testVal = testVal.replace(/ng-class="{'selected':selection\.indexOf\(\$index\) != -1}"/g,"");

演示:http://regexr.com/3enmj

在网站上,您可以通过打开菜单参考 - 转义字符来检查应转义的所有字符。

答案 1 :(得分:1)

如果您需要删除所有ng- *指令以及生成的html注释,您可以尝试the following regex

\sng-[a-z]*="(.*?)"|(<!--(.*?)-->)

您删除了一个空格\s,后跟ng-和任意数量的字符[a-z]*,后跟双引号和内部&#34;(。*?)& #34;以及html评论<!--(.*?)-->以及内部的内容。

可以改进,但它可以用来清理你的输入。