目前的实施Remy Sharp 的 jQuery 标签建议插件 http://remysharp.com/2007/12/28/jquery-tag-suggestion/只检查标签开头的匹配项。例如,输入“Photoshop”将不会返回名为“Adobe Photoshop”的标签。
默认情况下,搜索区分大小写。我稍微修改了它以修剪多余的空格并忽略大小写:
for (i = 0; i < tagsToSearch.length; i++) {
if (tagsToSearch[i].toLowerCase().indexOf(jQuery.trim(currentTag.tag.toLowerCase())) === 0) {
matches.push(tagsToSearch[i]);
}
}
我试图做的是再次修改它,以便当用户输入“Photoshop”时能够返回“Adobe Photoshop”。我尝试过使用match
,但是当模式中存在变量时我似乎无法让它工作:
for (i = 0; i < tagsToSearch.length; i++) {
var ctag = jQuery.trim(currentTag.tag);
if (tagsToSearch[i].match("/" + ctag + "/i")) { // this never matches, presumably because of the variable 'ctag'
matches.push(tagsToSearch[i]);
}
}
以这种方式执行正则表达式搜索的正确语法是什么?
如果你想在 JavaScript 中动态执行正则表达式,你必须使用正则表达式对象 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp。我相信你的代码看起来像这样(尚未测试,不确定,但总体思路是正确的):
for (i = 0; i < tagsToSearch.length; i++) {
var ctag = jQuery.trim(currentTag.tag);
var regex = new RegExp(ctag, "i")
if (tagsToSearch[i].match(regex)) {
matches.push(tagsToSearch[i]);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)