2017-11-28 3 views
0

パターンデータを取得するための正規表現を使用していますが、正常に動作していますが、変数から一部の正規表現を使用する必要がありますもし誰かがそれを作る方法を知っていれば。javascriptの一致関数で正規表現を使用するのに助けが必要

var subStr = document_root.documentElement.outerHTML.match(/http(.*?Frover.fff.com.*?)\;/g); 
alert(subStr[0]); 

私は最初に警告メッセージを表示しますが、このようにする必要があります。

var link=rover.fff.com; 
var regexpattern="/http(.*?F"+link+".*?)\;/g" 
var rex=new RegExp(regexpattern); 
var subStr = document_root.documentElement.outerHTML.match(regexpattern); 
alert(subStr[0]); 

私は何も得られません。 私を助けてください。 あなたが何かを混乱させるなら、コメント。

+0

NB:正規表現を適用しますHTML上ではほとんどの場合、悪い考えです。 – trincot

+0

あなたのコードの目的を説明してください:ハイパーリンクを探したいですか?テキストや、hrefやHTMLコメントでない属性に表示された場合はどうなりますか? – trincot

+0

このような緊急の理由は本当に悪いものです。この質問は、正規表現なしで解決する必要があります。 – trincot

答えて

1

JavaScriptでは、変数を使用する必要がある場合は、試したとおりに新しいRegExpオブジェクトを作成する必要があります。

2つのパラメータが必要です。最初のものはパターンの文字列です(最初と最後にスラッシュは付きません)。 2番目のフラグは(あなたのgのような)任意のフラグです。

だから、あなたのパターンはこのようなものになるだろう:

var regexpattern = new RegExp('http(.*?F' + link + '.*?)\\;', 'g') 

あなたはあなたのような文字列の特殊文字をエスケープする必要があることに注意してくださいが、このケースでは、あなたの\があることを他の文字列を(持っていただろう\\にエスケープされたので、正常に動作します)。

その後、/pattern/と同じ形式を使用します。あなたの場合、match()機能でregexpatternではなく、rexを必ず使用してください。

(リテラル\ではなかったとあなたはセミコロンをエスケープしたいくつかの理由が、ちょうどそれを完全に削除もしそうなら、あなたはセミコロンをエスケープする必要はありません)

+0

ありがとうございます。 – anshul

関連する問題