Javascript 突出显示除空格外的匹配表达式

Javascript 突出显示除空格外的匹配表达式,javascript,regex,Javascript,Regex,我有一个Ajaxsearch(比如Google),你可以输入一个单词,在底部自动完成表单,匹配的关键字会突出显示。问题是空白也被突出显示(被赋予强标记),这增加了空白的宽度 我必须修改下面的函数,但我不知道这是做什么的 highlight: function(value, term) { return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]

我有一个Ajaxsearch(比如Google),你可以输入一个单词,在底部自动完成表单,匹配的关键字会突出显示。问题是空白也被突出显示(被赋予强标记),这增加了空白的宽度

我必须修改下面的函数,但我不知道这是做什么的

highlight: function(value, term) {
    return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
},
突出显示:函数(值、术语){
返回值.replace(新的RegExp((?![^&;]+;)(?!)(?![^&;]+;),“gi”),“$1”;
},

已解决:只是添加了修剪以防止尾部空白突出显示

highlight: function(value, term) {
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + trim(term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1")) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
突出显示:函数(值、术语){
返回值.replace(新的RegExp((?![^&;]+;)(?!)(?![^&;]+;),“gi”),“$1”;

},

您当前的代码有很多问题。它似乎也检查html标记和实体的存在,但我不知道为什么这是必要的,我没有写上面的代码。它功能齐全。它首先搜索键入的单词和自动完成单词列表之间的匹配。然后它将“iPod Nano”替换为“iPodNano”,例如,如果您在搜索栏上键入“iPod”。请提供一个JSFIDLE?(我知道你的代码不起作用的边缘情况,它适用于字母和数字的正常情况,但一旦特殊字符出现,你会得到奇怪的东西)。我不知道如何为此创建JSFIDLE,但如果你能转到并键入“ipo”和“ipod”以及“nano”,我将不胜感激,因为没有足够的数据进行测试。如果数据包含
()[].+?\^$
,则突出显示功能将失败。