如何创建正则表达式以在较大的字符串中查找子字符串?

时间:2011-08-22 16:29:24

标签: javascript regex

如果我有一个字符串,例如:“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>");

旁注:我对正则表达式感到困惑!

3 个答案:

答案 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字符串中的任何位置,即使在单词的中间。第二个不会在一个单词的中间匹配。