2016-09-29 6 views
0

JavaScriptを使用してhtmlタグの文字列を置き換えたいと思います。この例では、<table<tbody>の間のすべてを削除したいと考えています。私は、置換関数と正規表現を使用しています。正規表現の構築はどこかで間違っていなければなりません。ここで私は、現在持っているものです。Javascriptテキストを削除するための正規表現

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

正規表現のロジック私はそれは(私が間違っているところ私を修正)このようなものですご覧のとおり、私は、文字列の一致を探しています

  1. <tableのように、その文字列を括弧で囲みます。

  2. 次に、 の英数字と非英数字の1つ以上が続くと予想されるため、\ w * \ W *を配置します。

  3. 最後に、私は という形式を正確に期待しているので、「< tbody>」を角かっこに入れてください。

したがって、結果は期待通りではありません。 <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

期待される結果が何でありますか? –

+0

正規表現の学習や理解に参考資料はありますか? (あなたは間違った情報を持っています) – Amit

+1

[]内の文字は単語を表しておらず、その中の任意の文字と一致します。ex: '[

答えて

1
  1. ブラケットを使用すると、この場合にはそれを必要としないので、任意の順序で間の任意の文字を見つけます。 http://www.w3schools.com/jsref/jsref_obj_regexp.aspを参照してください。
  2. \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);

関連する問題