场景
有的时候,返回html字符串,前端需要检索出需要的值。如果是英文,并且标签上有style属性、class。匹配时也会匹配上,正确的是应该只匹配内容。
例如:
我匹配r就会匹配到style里的color和red里的r也会匹配明显不对。
let sText = '<span style="color: red;">aA7<a style="color: red;"></a></span>';
var rHtml = new RegExp("r", "ig");//匹配传入的搜索值不区分大小写 i表示不区分大小写,g表示全局搜索 匹配标签
rHtml.test(sText); //这样也会匹配到明明标签里不存在r
解决方案
用正则去除掉标签。只匹配标签里的内容。
let sText = '<span style="color: red;">aA7<a style="color: red;">rrrr</a></span>';
let serchVal="r";//要搜索的值
var rHtml = new RegExp(`${serchVal}\<.*?\>`, "ig");//匹配传入的搜索值不区分大小写 i表示不区分大小写,g表示全局搜索 匹配标签
var aHtml = rHtml.test(sText); //存放html元素的数组
console.log(aHtml) //包含r所以是true