假设我有一个由包含特殊字符的单词组成的列表:
one
<two></two>
three#
$four
etc.
我想查找列表中包含特定字母的所有单词,
我试过用
var myList = "<one></one> $two three#";
var myRegex = /\bMYWORD[^\b]*?\b/gi;
alert(myList.match(myRegex));
但这对特殊字符不起作用..
不幸的是,我是javascript的新手,我不知道创建列表的最佳方式是什么 并单独列出单词..
答案 0 :(得分:1)
因此,基于您的输入,这可以解决问题:
var myList = "<one></one> $two three#";
var items = myList.split(' ');
$('#myInput').on('input',function(){
var matches = [];
for(var i = 0; i < items.length; i++) {
if(items[i].indexOf(this.value) > -1)
matches.push(items[i]);
}
$('#myDiv').text(matches.join(','));
});
this你想要的是什么?
答案 1 :(得分:0)
如果我理解正确,您只需要从查询字符串中转义所有特殊字符,以便RegEx引擎不会将它们视为这样。这样的事情应该有效:
var myList = "<one></one> $two three#";
var query = "$two";
var myRegex = new RegEx(query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
alert(myList.match(myRegex));
提供转义机制的the answer的提示。
这是你需要的吗?
PD:我还建议使用console
代替警报。