2012-04-10 158 views
11

<を受け入れるための正規表現を取得しようとしていますが、その間にあるすべてのコンテンツを取得するための外部デリミタとして>を使用しています。そのような山括弧(< or >)は正規表現で特別ですか?

<tfdsfa> 

ようなので、コンテンツ

をつかんされるべきです。

<と>文字などをエスケープする必要がありますか?

私のスクリプトで生成されるRegex:ファイルから

/<[^(>)]*>/g 

はコード:

data.method.highlight = function() { 
    var x = data.syntax, 
     text = data.$.span.html(); 
    for (var i=0, len = x.length; i < len; i++) { 
     var rx; 
     if (x[i].range) { 
      rx = new RegExp(x[i].tag[0] + "[^(" + x[i].tag[1] + ")]*" + x[i].tag[1], "g"); 
      console.log(rx); 
     } 
     else { 
      var temprx = x[i].tag[0]; 
      for (var z = 1; z < x[i].tag.length; z++) { 
       temprx += "|" + x[i].tag[z]; 
      } 
      rx = new RegExp(temprx, "g"); 
     } 
     text = text.replace(rx,function (match) { 
      console.log("looping - range"); 
      return '<span class="' + x[i].class.default + '">' + match + '</span>'; 
     }); 
     data.$.span.html(text); 
    } 
}; 
+9

あなたのregexが動作します。あなたが達成できなかったのは正確ですか? –

+0

regexesを開発しているときは、いつでもこのツールを使用してください:http://gskinner.com/RegExr/ –

+0

この式をどのように使っているかを表示できますか? – MilkyWayJoe

答えて

16

<>どちらも、正規表現内のメタ文字です。

これは私のために動作します:あなたがHTMLとブラウザに結果を挿入しようとすると、それは<blablabla>のように、有効でないHTMLタグであることを「考えている」ので

'<foo> and <bar>'.match(/<[^>]*>/g); // ["<foo>", "<bar>"] 
+0

私は編集を見てみることはできますか?正規表現はjsfiddleで実行すると動作しますが、スクリプトでは動作しません。どのように起こっているか考えていますか? –

+0

@MikeDepies、 'console.log(rx)'の出力は?具体的には、RegExpコンストラクタに送信する正確な文字列、 'text'の正確な値、結果と期待値の関係は何ですか? – davin

+0

テキスト値がどのようなものになっているのかを尋ねてくれたおかげで、問題が分かりました。テキストは、<文字をHTMLの特殊文字カウンターパートに変換していました。私は投稿する前にこれについて本当に考えていたはずです。ありがとうございました。 –

-1

あなたが問題を抱えていることができます。

関連する問題