【问题标题】:Find all words containing specific letters and special characters查找包含特定字母和特殊字符的所有单词
【发布时间】:2014-10-27 01:09:51
【问题描述】:

假设我有一个由包含特殊字符的单词组成的列表:

one
<two></two>
three#
$four
etc.

我想查找列表中包含特定字母的所有单词,
我试过用

var myList = "<one></one> $two three#";
var myRegex = /\bMYWORD[^\b]*?\b/gi;
alert(myList.match(myRegex));

但这不适用于特殊字符..

DEMO

不幸的是,我是 javascript 新手,我不知道创建列表的最佳方法是什么
并分隔列表中的单词..

【问题讨论】:

  • 您要匹配哪些特定字母?
  • 如果可能的话,我想匹配任何字母或字符..
  • 您只是想将该列表放入数组中吗?为什么不只是 split 换行符上的文字?
  • 您真正想要的最终结果是什么?给定输入,这个函数/方法的输出应该是什么?
  • @DavidThomas 我想要的最终结果是使用文本输入来选择要匹配的值,并且能够匹配包含特殊字符的单词

标签: javascript jquery regex


【解决方案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 是你想要的吗?

【讨论】:

  • 是的,但只有在我输入“$”时才会出现“$two”
  • 还记得我所说的清晰度吗?更新了我的答案以处理部分匹配。
  • 谢谢,这正是我想要的。非常感谢! :)
【解决方案2】:

如果我理解正确,您只需从查询字符串中转义所有特殊字符,以便 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 而不是警报。

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多