Javascript:搜索和splitText与变异的元音,变音符号,

时间:2011-03-07 10:50:26

标签: javascript regex search text special-characters

我正在使用免费的Javascript来搜索和突出显示网站上的文字。 如果search-stirng是单词的一部分,则应突出显示单词。 示例:搜索“over”,而不是“stackoverflow”必须突出显示。

所以第一步是使用正则表达式搜索文本以选择整个单词的开头,并返回起始位置:

var string='over'; //String to search
var pattern= new RegExp("[a-zA-Záéíóäëiöúàèììùüß-]*"+string,'i');
var position = node.data.toUpperCase().search(pattern);

接下来是调用高亮功能......

            if (position >= 0)
                return highlight(node, position, string);
            else
                return 0;

...使用起始位置并检测单词的最后一个字符(endbit)

function highlight(node, position, string){
                var middlebit = node.splitText(position);
                var endbit = middlebit.splitText(middlebit.data.search(/[^a-zA-Záéíóäëiöúàèììùüß-]/));
[...] next: highlight the word...

只要你不使用变异的元音,变形金刚等,那就好了。 例如:如果搜索结束,则突出显示整个单词“stackoverflow”。 如果你搜索“würstchen”(例如在bratwürstchen)它不起作用。 它看起来像那样

 var position = node.data.toUpperCase().search(pattern);

var middlebit = node.splitText(position);

不适用于那种特殊字符。

希望任何人都知道如何解决这个问题。

非常感谢你,

Bndr

1 个答案:

答案 0 :(得分:1)

为了回答我自己的问题: 经过2天的“尝试和错误”并最终写下这个问题后,我发现这条线上缺少“我”:

var endbit = middlebit.splitText(middlebit.data.search(/[^a-zA-Záéíóäëiöúàèììùüß-]/));

找到endbit有一个错误的表达式。 所以正确的是:

var endbit = middlebit.splitText(middlebit.data.search(/[^a-zA-Záéíóäëiöúàèììùüß-]/i));

小事,影响大; - )