gpt4 book ai didi

javascript - Angular : Regex nothing to repeat error

转载 作者:行者123 更新时间:2023-12-04 19:50:00 27 4
gpt4 key购买 nike

我正在尝试替换一些词(我的根范围数据数组中存在的所有词)以添加工具提示。

我的代码:

.directive('replaceDirective', function($rootScope, $compile) {
return {
restrict: 'A',
replace: true,
link: function(scope, element, attrs) {

//For exemple
//$rootScope.data = ["word1", "word2", "word3", etc..];

var test = {
getTest: function(e, word) {
return RegExp(e.toString().replace(/\bxx\b/g, "").replace(/xx/g, word), "g")
}
};

scope.$watch(attrs.replaceDirective, function(html) {
for (var i=0; i<$rootScope.data.length; i++) {
var tooltipWord = $rootScope.data[i].word;
var tooltipDescription = $rootScope.data[i].def;
var template = '<a data-html="true" class="tooltip" title="' + tooltipDescription + '" data-toggle="tooltip" data-placement="top" tooltip>' + tooltipWord + '</a>';

var oldRegex = /\bxx\b/;
html = html.replace(test.getTest(oldRegex, tooltipWord), template);
}

element.html(html);
$compile(element.contents())(scope);
});
}
};
});

没用!我有一个错误。

错误是:

"Error: nothing to repeat  
.link/test.getTest@file:www/js/directives.js:336:28
.link/<@file:www/js/directives.js:357:76"

最佳答案

问题在于形成动态正则表达式部分。当您在另一个量词、 anchor 或交替运算符之后设置量词时,会出现“Nothing to repeat”错误。

因此,也许您的正则表达式开始看起来像 (text)*+,或 (a|?b),或 *\s+.

要解决此问题,请确保您 escape the metacharacters在测试之前在你的正则表达式中。

function escapeRegExp(str) {
return str.replace(/[\[\]\/{}()*+?.\\^$|-]/g, "\\$&");
}

getTest: function(e, word) {
return RegExp(escapeRegExp(e.toString().replace(/\bxx\b/g, "").replace(/xx/g, word)), "g")
}

关于javascript - Angular : Regex nothing to repeat error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31262333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com