【问题标题】:Using regex in Javascript to replace a part of the string在 Javascript 中使用正则表达式替换字符串的一部分
【发布时间】:2017-11-24 05:26:34
【问题描述】:

我有一些文本试图用 Angularjs 中的正则表达式替换其中的一部分。

文本将采用以下格式:

Name: Jane
Age: 66
Address: 31 Test Street

我想用 'REDACTED' 替换 Age: 之后的部分(所以 66 不会出现),所以我创建了这个过滤器,在我看来它应该可以工作:

angular.module('person')
    .controller(controllerId, personControl)
.filter('ageFilter', function () {
    return function (text) {
        if (text)
            return text.replace(/[\n\r].*Age: \s*([^\n\r]*)/, 'REDACTED');
        return '';
    }
});

html的相关部分:

<dd ng-bind-html="vm.model.PERSON_INFO | ageFilter"></dd>

过滤器被命中,但文本永远不会被替换。当我在 Regex 测试网站上测试时,我的 regex 有效,所以我认为我可能做错了我看不到的其他事情。

【问题讨论】:

  • 创建一个重现问题的 plunker 演示
  • 只是一个指针,不应该把返回值赋值给view吗?
  • 我认为你的文字有问题,里面会有\n吗?
  • 不应该text.replace(/^(Age:[\t ]*).*/m, '$1REDACTED'); 就够了吗?见this regex demo。顺便说一句,your regex does not work well.

标签: javascript angularjs regex


【解决方案1】:

试试这个:

return text.replace(/([\n\r]+.*Age: )(\s*)([^\n\r]*)/, '$1REDACTED$2')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多