我有html内容,其中一些单词有成功,失败等。我正在尝试使用正则表达式来过滤单个关键字或多选复选框中的关键字组合。多选复选框的结果是逗号分隔的字符串。有没有条件检查我的html内容是成功还是失败或其他字符串案例。我正在尝试使用正则表达式
搜索或子句案例1
var filter = 'success';
$(this).html().search(new RegExp(filter, "i")) > 0) {
alert('data found')
}
案例2:
var filter = 'success, failure';
$(this).html().search(new RegExp(filter, "i")) > 0) {
alert('data found')
}
答案 0 :(得分:2)
定义一个数组包含您期望的字符串
var arrString = ["success","failure"];
如您所说,多选复选框是逗号分隔的字符串。
所以,我假设是这样的。
var arrHtml = "success,test,test2,failure"; ////$(this).html()
arrHtml.split(",").some(function(val, index) {
return arrString.indexOf(val) >= 0
})
OR ECMA6:
arrHtml.split(",").some((val,index)=> arrString.indexOf(val)>=0 )
答案 1 :(得分:2)
我要说的是,使用正则表达式可能是一个寻找问题的解决方案,您可能会使用@RIYAJ KHAN’s answer中的普通.indexOf()
等进一步...
如果你有一个包含你正在寻找的所有单词的数组,例如:
var WORDS = ['success', 'failure'];
您可以按如下方式创建RegExp对象:
var expression = new RegExp('\\b('+WORDS.join('|')+')\\b');
(在开头和结尾使用\b
将确保您只匹配整个单词,这可能是使用正则表达式的唯一正当理由。)
请注意,JavaScript没有从字符串中转义正则表达式特殊字符的功能,但如果您不知道字符串是否是正则表达式安全,请先使用this来转义数组项。
然后搜索任何单词:
var found = expression.test($(this).text());
请注意,如果您想找出匹配的字词,则必须使用String.prototype.match
方法而不是String.prototype.search
。
答案 2 :(得分:1)
尝试
var filter = '(success)|(failure)';
$(this).html().search(new RegExp(filter, "i")) > 0) {
alert('data found')
}