如果我有一个字符串,例如:“Consensus IRIS 2010-11 Series 6”
如果有人键入该字符串的一部分,例如“虹膜”进入文本框,如何识别原始字符串中的子字符串?
我有以下内容,但它仅在字符串以开头时与文本框中的值匹配。
var txt= $('#txtName').val();
var regExp = new RegExp("^" + txt, "i");
var t = item.name.replace(regExp, "<span class='matched-text'>" + txt + "</span>");
旁注:我对正则表达式感到困惑!
答案 0 :(得分:2)
因为您的正则表达式以^
开头,所以它只会匹配以txt
的值开头的序列。移除^
即可设置。
答案 1 :(得分:2)
您的问题来自于将"^"
添加到正则表达式使其仅在字符串/文本框的开头匹配。删除它,它应该正常的子串的工作。
但是,如果有人在搜索框中键入正则表达式,则代码可能会产生意外影响。例如,如果有人输入\w
,则会突出显示每个字母和数字。 This site有助于更多地了解正则表达式。
答案 2 :(得分:0)
试试这个:
var regExp = new RegExp(txt, "i");
或者这个:
var regExp = new RegExp("\b"+txt"\b", "i");
第一个匹配txt
字符串中的任何位置,即使在单词的中间。第二个不会在一个单词的中间匹配。