2012-02-21 12 views
1

私はexp * を含むが、「<」で始まるすべてのものを除外し、「>」検索除外表現

で終わる大きな stringText中での発現( var exp = "foo")を検索しようとしています

は、今私はこのようにそれを書く方法を知っている:

var regexp = new RegExp(exp, 'g'); 
    match = regexp.exec(stringText) 

私は除外する条件を書くにはどうすればよいですか?

私はそれが/<.+>/gであるはずであることは知っていますが、どのように組み合わせますか?私はこれが正しいとは思いませんが、どうすればいいですか?

var regexp = new RegExp(exp + /<.+>/, 'g'); 

おかげで、アロン

== UPDATE ===

I '' は、この文字列の中で検索したい:

"a dog <span class="something"> had a </span> and a cat" 

私はそれが最初にヒットしたいです'a'、 'a' 'は' had '、' a 'はそれ以降、' a 'は' and 'a' cat '

私は 'スパン'または 'クラス'の中に「」を入れたいと思っていますか<>

+0

あなたが実際に探しているものは明確ではありません。あなたは「Aを見つけてBを除きたい」と言っているようですが、A&Bはどのように関係していますか? –

+0

あなたがしていて、マッチしたくないことの例を挙げられますか?読んでいるところから、 'foo'を望んでいますが、' 'ではありません。 ''はどうですか? –

答えて

0

あなたが望むものは、逆見返りと先読みのようです。残念ながら、javascriptではルックバックはありません。先読みのみ。

など。

/foo(?!bar)/g 

the foo fightersfooと一致しますが、それはあなたがあなたがhttp://www.regular-expressions.info/javascript.html

http://www.regular-expressions.info/lookaround.html#lookaheadとJavaScript regexpesに先読みを学ぶことができ

/foo(?!>)/g 

ような何かをしたいかもしれませんthe foobar solution

fooとは一致しません

+0

しかし、もし私が "foo < foo span>"を探すなら、それらは両方とも '>'の後に来るので除外されます(そして私は最初のfooを大丈夫にします)。 no <>または '>'の後に '<'が付いていない場合 – Alon

+0

いいえ、lookaheadは他の正規表現と同じように動作します/ foo(?!bar)/は最初と最後のfooの"foo bar foobar foo"。/foo(?!.*bar)/ただし、最後のfooにのみ一致します。 –

0

多分私はあなたに何をしたいですか? sが最も簡単で、まず、あなたが簡単にあなたの正規表現は、あなたの新しい一時HTML-での探し一致させることができ、このような本

var tmp = exp.replace(/<[^>]+>/g, ''); 

として正規表現で(空の文字列に置き換え)HTMLタグのすべての回出てくる除去することによって達成します少ない文字列。

1

html/xmlを解析する場合は、正規表現以外のものを探すべきだと主張したいと思います。私よりも男がいいよexplained why

あなたは、より堅牢なソリューションを保証するものではありません正規表現や、あなたの問題を使用して地獄を曲げをしている場合はJSは後読みがありませんので、私はこのような何かをやってお勧めしたい:

var input = "a dog <span class='something'> had a </span> and a cat"; 

// Remove anything tag-like 
var temp = input.replace(/<.+?>/g, ""); 

// Perform the search 
var matches = new RegExp(exp, "g").exec(temp); 

か1つのライナー:

var matches = new RegExp(exp, "g").exec(input.replace(/<.+?>/g, ""))