http://jsfiddle.net/nHGU6/
HTML Test:
<div id="wrapper-accent-sensitive">
<p>cafe</p>
<p>asdf</p>
<p>café</p>
</div>
<hr />
<div id="wrapper-not-accent-sensitive">>
<p>cafe</p>
<p>asdf</p>
<p>café</p>
</div>
Prueba de CSS:
.yellow {
background-color: #ffff00;
}
reemplazo Javascript:
jQuery.fn.highlight = function (words, options) {
var accentedForms = {
'c': 'ç',
'e': 'é'
};
var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false, accentInsensitive: false };
jQuery.extend(settings, options);
if (settings.accentInsensitive) {
for (var s in accentedForms) {
words = words.replace(s, '[' + s + accentedForms[s] + ']');
}
}
if (words.constructor === String) {
words = [words];
}
var flag = settings.caseSensitive ? "" : "i";
var pattern = "(" + words.join("|") + ")";
if (settings.wordsOnly) {
pattern = "\\b" + pattern + "\\b";
}
var re = new RegExp(pattern, flag);
return this.each(function() {
jQuery.highlight(this, re, settings.element, settings.className);
});
};
Código de ensayo:
$(document).ready(function() {
$("#wrapper-accent-sensitive").highlight("cafe", { className: 'yellow' });
$("#wrapper-not-accent-sensitive").highlight("cafe", { className: 'yellow', accentInsensitive: true });
});
Consulte la respuesta de casablanca aquí: http://stackoverflow.com/questions/4261740/accent-insensitive-regex. Básicamente, realice modificaciones alrededor de la línea 91 de jquery.highlight.js, de modo que la expresión regular ahora contenga clases de caracteres. Tal vez agregue una opción "acentos insensibles" alrededor de la línea 83. – anon
Gracias, pero estoy un poco perdido sobre cómo implementar eso en mi código ... – Santiago
Ok. He agregado una implementación a continuación. – anon