我的代码:
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>';
}));
}
});
Run Code Online (Sandbox Code Playgroud)
我想突出显示带重音的字母,即:
$('body').highlight("cao");
Run Code Online (Sandbox Code Playgroud)
应突出显示:[ção] OR [çÃo] OR [cáo] OR expre [cão] tion或[Cáo] tion
我怎样才能做到这一点?
我有一个JavaScript正则表达式,基本上找到两个字母的单词.问题似乎是它将重音字符解释为单词边界.的确,似乎是这样
单词边界("\ b")是两个字符之间的一个点,在它的一边有一个"\ w",另一边有一个"\ W"(按任意顺序),计算出假想的字符字符串的开头和结尾匹配"\ W". AS3 RegExp用于匹配其中包含边界类型字符的单词
从那以后
\ w匹配任何字母数字字符(单词字符),包括下划线([a-zA-Z0-9_]的缩写).\ W匹配任何非单词字符([^ a-zA-Z0-9_]的缩写) http://www.javascriptkit.com/javatutors/redev2.shtml
显然重音字符不被考虑在内.这就像是一个问题Montréal.如果é被认为是单词边界,则al是两个字母的单词.我已经尝试自己定义一个允许重音字符的单词边界,但是看作单词边界甚至不是一个字符,我不知道如何去寻找它.
有帮助吗?
以下是相关的JavaScript代码,userInput使用re_state正则表达式搜索和查找双字母单词:
var re_state = new RegExp("\\b([a-z]{2})[,]?\\b", "mi");
var match_state = re_state.exec(userInput);
document.getElementById("state").value = (match_state)?match_state[1]:"";
Run Code Online (Sandbox Code Playgroud)