用于删除文本的Javascript正则表达式

时间:2016-09-29 23:45:52

标签: javascript html regex string

我想使用JavaScript替换html标记中的字符串。因此,在此示例中,我想删除<table<tbody>之间的所有内容。我正在使用替换函数和正则表达式。正则表达式构造在某处必定是错误的。这是我现在拥有的:

str = str.replace(/([<table]\w*\W*[<tbody>])/, "");

正如我所看到的正则表达式逻辑就是这样(纠正我错在哪里):

  1. 我正在寻找<table的字符串匹配,所以我把那个字符串放在括号中,因为我希望它与写的完全匹配。

  2. 然后我放置\ w * \ W *,因为我希望两者中的一个或多个 要遵循的字母数字和非字母数字字符。

  3. 最后我     放置“&lt; tbody&gt;”在括号中,因为我期望这种格式     准确。
  4. 所以结果并不像我预期的那样。我的字符串中没有其他<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>
    

1 个答案:

答案 0 :(得分:1)

  1. 括号中可以找到任意顺序之间的任何字符,因此在这种情况下您不需要它。见http://www.w3schools.com/jsref/jsref_obj_regexp.asp
  2. \w*\W*与空格不匹配。
  3. 以下是解决方案:/<\s*table(?:.|\s)*<\s*tbody\s*>/i

    &#13;
    &#13;
    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;
    &#13;
    &#13;