jquery - 不区分重音的正则表达式

标签 jquery regex unicode highlight diacritics

我的代码:

jQuery.fn.extend({
 highlight: function(search){
  var regex = new RegExp('(<[^>]*>)|('+ search.replace(/[.+]i/,"$0") +')','ig');

  return this.html(this.html().replace(regex, function(a, b, c){
   return (a.charAt(0) == '<') ? a : '<strong class="highlight">' + c + '</strong>';
  }));
 }

});

我想突出显示带有重音符号的字母, 即:

$('body').highlight("cao");

应突出显示:[ção] OR [ção] OR [cáo] OR expre[cão]tion OR [Cáo]tion

我怎样才能做到这一点?

最佳答案

执行此操作的唯一正确方法是首先通过 Unicode 规范化形式 D(规范分解)运行它。

然后,您剥离我们产生的任何标记(\pM 字符,或者可能 \p{Diacritic},具体取决于),并针对 de/un 运行您的比赛- 标记版本。

在任何情况下都不要对一堆文字进行硬编码。哎呀!

python 排序!

关于jquery - 不区分重音的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261740/

相关文章:

javascript - $ ("#my-div").css ("height", $(window).outerHeight() + "px");适用于 window.resize() 但不适用于 $(window).load()

jquery - 单击时保持链接颜色直到单击另一个链接

java - 如何使用正则表达式验证字符串 key=value 格式?

ruby - 由多个定界符分割

unicode - 竞争对编码和字符集的理解

jquery - jQuery 中背景图像的实际大小

c - 删除 C 中的 HTML 标签

java - 如何规范化 Java 中的 Unicode 数字

unicode - 在数据库表中存储货币符号

javascript - 动画不适用于外循环