javascript - 如何在搜索时仅使用星号通配符?

标签 javascript regex replace split

我只想支持星号(*)通配符而不是正则表达式。

这是我的代码:

for example : checkNames[i] = "Number of ongoing MS sessions"


var checkName = checkNames[i].split("*").join(".*");
supportRegExp(dataSource[j].ColumnName, checkName, validatedList,dataSource[j]);

这是我的 supportRegExp 函数:

function supportRegExp(arrayElem, checkName, validatedList, elem) {
    var regexpArr = checkName
        .replace(/\t/g, '\n')
        .split("\n")
        .map(function (item) { 
            return "^" + item + "$"; 
        });
    var regexp = new RegExp(regexpArr, 'i');
    $my.isMatched = regexp.test(arrayElem)
    if ($my.isMatched) {
        validatedList.push(elem);  //elem: my object { inside ColumnName, DisplayName }
        AddValidatedList(arrayElem); //arrayElem : elem.ColumnName or elem.DisplayName bla bla.
    }
}

这是可行的。我写“num*”和即将出现的结果,然后我写“num|m”和即将出现的结果。因为我使用的是正则表达式,所以我只想支持“*”符号。

例如:当我写 num* 时,结果应该出现,但我写 num|m 不应该出现结果。因为我只想支持星号。

我该怎么办?

请有任何想法。

最佳答案

this question 大量借款,我认为您正在追求以下内容:

var checkName =
    checkNames[i]
        .split("*")
        .map(function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); })
        .join(".*");

在分割 * 字符后转义正则表达式的每个部分,准备好与 .* 连接回来。

关于javascript - 如何在搜索时仅使用星号通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41298353/

相关文章:

javascript - 一次对多个数组进行排序

regex - 正则表达式查找youtube网址,剥离参数并返回干净的视频网址?

PHP:正则表达式仅将电话号码转换为文本中的 html A 标签

javascript - JQuery 视差背景随鼠标悬停移动

javascript - Highcharts ,类型错误: obj is null

regex - 双/三行换行符时分割字符串

PHP 在 foreach 循环中替换多个字符串

mysql - 仅在行首查找和替换

python - 返回超过最小长度的单词数,并用单词 + 空格替换不是的单词

javascript - jQuery 驱动的图像 slider 头痛