下面我的正则表达式查询与单词完全匹配,例如Bob或Bill
var regExp = new RegExp("^" + inputVal + "$", 'i');
我想要它做的是完全匹配(鲍勃或比尔等),但不匹配弗雷德
所以除了Fred之外什么都匹配,这有意义吗? 有谁帮我解释我是怎么做到的?
由于
编辑2: 我认为id显示我的实际脚本而不是,我正在做的是搜索一个表,并且即时页面加载我想要隐藏包含字符串的行。所以如果exlucde lenght大于0则隐藏该行...
function searchPagingTable(inputVal, tablename, fixedsearch, exclude) {
var table = $(tablename);
table.find('tr:not(.header)').each(function (index, row) {
var allCells = $(row).find('td');
if (allCells.length > 0) {
var found = false;
allCells.each(function (index, td) {
if (fixedsearch == 1) {
var regExp = new RegExp("^" + inputVal + "$", 'i');
}
else if (exclude.length > 0)
{
var regExp = new RegExp("^(?!" + exclude + ")", "i");
}
else {
var regExp = new RegExp(inputVal, 'i');
}
if (regExp.test($(td).text())) {
found = true;
return false;
}
});
if (found == true) $(row).show().removeClass('exclude'); else $(row).hide().addClass('exclude');
}
});
pa
ginate(); }
答案 0 :(得分:2)
那将是
var exclude = "Fred"
var regExp = new RegExp("^(?!.*" + exclude + ")", "i");
此正则表达式匹配除包含Fred
的字符串之外的任何字符串。它实际上并不匹配字符串中的任何字符,但如果您只是在寻找true/false
结果,那就足够了。
这也会找到包含Alfred
或Fredo
的字符串,因此如果您不想这样做,则需要告诉正则表达式只使用word boundaries查找整个单词:
var regExp = new RegExp("^(?!.*\\b" + exclude + "\\b)", "i");
您需要确保exclude
字符串仅包含ASCII字母/数字(或下划线)才能使其正常工作。
答案 1 :(得分:2)
您可以填充要匹配的名称列表:
var validNames = ['bob', 'bill'];
然后小写每个输入并匹配列表:
if (validNames.indexOf(inputVal.toLowerCase()) != -1) {
// it's a good name
}
对于旧版浏览器,您必须填充Array.indexOf()
答案 2 :(得分:1)
var re = new RegExp('^\\s*Fred\\s*$','i');
if (inputVal.match(re)) {
// Fred has been found
} else {
// Anything has been found
}