【发布时间】:2016-04-03 07:58:44
【问题描述】:
我有 html 内容,其中一些单词有成功、失败等。我正在尝试使用正则表达式来过滤单个关键字或多选复选框中的关键字组合。多选复选框的结果是一个逗号分隔的字符串。是否有条件检查我的 html 内容是否有成功或失败或其他字符串情况。我正在尝试使用正则表达式搜索 or 子句
案例一
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')
}
【问题讨论】:
-
您的过滤器不是(有意义的)正则表达式,除了匹配您输入的确切字符串。查看regexone.com 或regexpal.com 了解正则表达式。
-
首先:搜索整个单词时,使用正则表达式
\bWORD\b(其中 WORD 是您要搜索的单词)。第二:使用.text()而不是.html()在HTML节点的文本内容中进行搜索;否则,您还会在标签名称、属性等中找到该词。第三:我不知道您的确切用例,但使用正则表达式文字而不是使用字符串参数调用new RegExp可能更容易。 -
另外,您的条件应该是
> -1或>= 0而不是> 0,因为匹配可能发生在索引0。 -
是否有特定原因需要使用正则表达式?您可以将
if与||一起使用:if (text.indexOf("success")>=0 || text.indexOf("fail")>=0)
标签: javascript jquery regex