私信  •  关注

Ming

Ming 最近创建的主题
Ming 最近回复了
5 年前
回复了 Ming 创建的主题 » 如何避免Jquery规则匹配中的重复替换

我找到了另一种方法来解决这个问题。 首先,创建一个函数来生成uuid。

function createUUID() {
// http://www.ietf.org/rfc/rfc4122.txt
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";

var uuid = s.join("");
return uuid;

} 然后,循环matchArray并使用一个对象来记录

for(var i = 0 ; i < matchArray.length; i++){
 var obj = {};
 obj[matchArray[i]] = createUUID();
};

var uuids=createUUID(); 然后用uuid替换匹配字

   for (var i = 0 ; i < matchArray.length ; i++) {
         var matchWord = matchArray[i];
         var replaceRegex = new RegExp(matchWord,"g");
         var tempStr = uuids[matchArray[i]];
         var replaceHtml = "<span >"+tempStr+"</span>"
         replaceText = replaceText.replace(replaceRegex,replaceHtml);
  }

替换后,循环对象属性

for ( var key in uuids){
   var tempRegex = new RegExp(uuids[key],"g");
   replaceText = replaceText.replace(tempRegex,key);
   }

由于实际情况比实例复杂,所以该方法可以解决不规则字符串