搜索时如何使用星号通配符?

时间:2016-12-23 09:08:04

标签: 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 *时,结果应该会出现但是我写的数字不应该是结果。因为我想支持星号。

我该怎么办?

请知道。

1 个答案:

答案 0 :(得分:1)

this question大量借用,我认为你是在追求以下内容:

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

在分割*字符后,它会转义正则表达式的每个部分,准备与.*联接。