我想支持星号(*)通配符而不是正则表达式。
这是我的代码:
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 *时,结果应该会出现但是我写的数字不应该是结果。因为我想支持星号。
我该怎么办?
请知道。
答案 0 :(得分:1)
从this question大量借用,我认为你是在追求以下内容:
var checkName =
checkNames[i]
.split("*")
.map(function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); })
.join(".*");
在分割*
字符后,它会转义正则表达式的每个部分,准备与.*
联接。