我想使用JavaScript替换html标记中的字符串。因此,在此示例中,我想删除<table
和<tbody>
之间的所有内容。我正在使用替换函数和正则表达式。正则表达式构造在某处必定是错误的。这是我现在拥有的:
str = str.replace(/([<table]\w*\W*[<tbody>])/, "");
正如我所看到的正则表达式逻辑就是这样(纠正我错在哪里):
我正在寻找<table
的字符串匹配,所以我把那个字符串放在括号中,因为我希望它与写的完全匹配。
然后我放置\ w * \ W *,因为我希望两者中的一个或多个 要遵循的字母数字和非字母数字字符。
所以结果并不像我预期的那样。我的字符串中没有其他<tbody>
或<table
,所以我不知道我做错了什么。
在我用任何内容替换字符之前,这就是字符串的样子。
"\n\t\t\t\t\t\t\n <div>\n\t\t\t\t\t\t\t
<table id=\"gvStation_ctl19_gvExtRows\" style=\"border-collapse: collapse;\" border=\"1\" rules=\"all\" cellspacing=\"0\">
\n\t\t\t\t\t\t\t\t<tbody>
答案 0 :(得分:1)
\w*
和\W*
与空格不匹配。以下是解决方案:/<\s*table(?:.|\s)*<\s*tbody\s*>/i
var str = '"\n\t\t\t\t\t\t\n < div>\n\t\t\t\t\t\t\t < table id=\"gvStation_ctl19_gvExtRows\" style=\"border-collapse: collapse;\" border=\"1\" rules=\"all\" cellspacing=\"0\"> \n\t\t\t\t\t\t\t\t< tbody>';
str = str.replace(/<\s*table(?:.|\s)*<\s*tbody\s*>/i, "");
alert(str);
&#13;