时间:2021-07-01 10:21:17 帮助过:19人阅读
7 && j > match_len) //如果此匹配比已发现的匹配长 { match_len = j; //记录匹配长度 match_off = lp; //记录匹配位置 } } /*匹配处理*/ if (match_len > 7) //如果找到了符合要求的匹配 { if (last_match_len != 0 && last_match_len < match_len) //如果上次匹配存在,且长度没有这次匹配的长度大 { /*懒惰模式*/ output_unmatch(input.charAt(p - 1)); //放弃上次匹配,将字符直接输出 last_match_off = match_off; //记录此次的匹配位置 last_match_len = match_len; //记录此次的匹配长度 } else if (last_match_len != 0) //如果上次匹配存在,且长度比这次匹配的长度大 { /*处理上次的懒惰模式*/ output_match(); //输出上次的匹配 } else //如果上次匹配不存在 { /*懒惰模式*/ last_match_off = match_off; //记录此次的匹配位置 last_match_len = match_len; //记录此次的匹配长度 } } else //如果找不到符合要求的匹配(例如匹配超出当前指针) { if (last_match_len != 0) //如果上次匹配存在 { /*处理上次的懒惰模式*/ output_match(); //输出上次的匹配 } else { output_unmatch(input.charAt(p)); //直接输出当前的字符 } } } else //如果当前不存在匹配 { if (last_match_len != 0) //如果之前发生了匹配 { /*处理上次的懒惰模式*/ output_match(); //输出匹配 } else { output_unmatch(input.charAt(p)); //直接输出当前的字符 } } } //循环扫描结束 /*边界处理*/ if (last_match_len != 0) //如果之前发生了匹配 { /*处理上次的懒惰模式*/ output_match(); //输出匹配 } /*回调输出*/ callback(output.join("")); } //end of run function output_match() { output.push("`"); //输出前缀符 output.push(N2C(last_match_off, 3)); //输出3字节偏移量 output.push(N2C(last_match_len, 2)); //输出2字节匹配长度 p += last_match_len - 2; //移动当前指针到匹配串的末尾(因为懒惰模式,此时 p 指向 last_match_off + 1 的位置,所以应 -2 ) last_match_off = 0; //清空匹配位置 last_match_len = 0; //清空匹配长度 } function output_unmatch(c) { output.push(c == "`" ? "``" : c); //输出未匹配的字符 } } function C2N(c) //将 92 进制字符串(高位在右)转换为 10 进制数字 { var len = c.length; var re = 0; for (var i=0; i </textarea> </textarea> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
< 上一篇
JQuery为textarea添加maxlength属性的代码_jquery
下一篇 >
javascriptURL编码和解码使用说明_javascript技巧
记住我的登录 忘记密码?
登录
我已阅读用户协议及版权声明
注册