2011-07-26 10 views
0

私は、正規表現を使用して検索と置換を行い、最初の(そしてこのケースでは)逆参照を変数として取得しようとしています。javascriptの正規表現でどのように逆参照を使用しますか?

var RegexSearchString = "/((?:^(?:https?://|www\\d{0,3}[.])(?:.*?/)|(?:[a-z0-9.\\-]+[.][a-z]{2,4}/))(?:.*?/))/"; 
var test = "http://foo.bar.net/interestingbit/lots/of/other/stuff/here"; 
alert(test); 
test.replace(umassURLRegexSearchString, "$1"); 
alert(test); 

期待される結果を有する警戒すべきである: の警告に続いhttp://foo.bar.net/interestingbit/lots/of/other/stuff/here

http://foo.bar.net/interestingbit/

最初の初期化の両方のアラートがテスト変数の値を含みます。これがどこに壊れているのか、どんな考えですか?

答えて

0

以下を行う必要があります。

  1. が新しいキャプチャグループ
  2. 割り当てる前に、あなたの正規表現に残り
  3. 動きからパス上のエンド括弧を最初のフォルダを分離するための新しいキャプチャグループを追加します。正規表現の結果が戻ってあなたの正規表現

でコードをして/文字のすべてを

  • エスケープをテストしますこれらの変化のLLは次のとおりです。

    var RegexSearchString = /^((?:(?:https?:\/\/|www\d{0,3}[.])(?:.*?\/)|(?:[a-z0-9.\-]+[.][a-z]{2,4}\/))(?:.*?\/))(?:.*?\/)*/; 
    var test = "http://foo.bar.net/interestingbit/lots/of/other/stuff/here/"; 
    alert(test); 
    test = test.replace(RegexSearchString, "$1"); 
    alert(test); 
    

    はここでそれをチェックアウト:これは私のために動作しませんhttp://jsfiddle.net/jheHR/1/

  • +0

    。それは、より多くのURLをキャプチャします。 このリンクによれば、元の投稿の正規表現は大丈夫ですが、私は捕捉グループを参照することができません –

    +0

    申し訳ありませんが、私はそれを見直し、いくつかの変更を発見しました –

    +0

    ものは完全に今働いています。ご協力いただきありがとうございます! –

    関連する問題