2011-10-28 14 views
1

次の文字列と一致させようとしていますが、成功しません。と一致[ABC DEF](http://google.com)

これまでこれまでに行ったことがあります。

/\[([^\]]+)(\([^\)]+)/ 

これは機能しない最後の部分です(\([^\)]+)

つまり、

var meta = "[ABC DEF](http://google.com)"

  • この部分の作品。

    meta.match(/\[([^\]]+)/) => ABC DEF

  • これは動作しません。

    meta.match(/\[([^\]]+)(\([^\)]+)/) // => null

これは私が欲しいものです。それは動作しませんなぜ

["ABC DEF", "http://google.com"]

誰もが知っていますか?

答えて

5

あなたは最後の]が欠けていました。また、)は、文字クラスでエスケープする必要はありません。第3に、末尾に)を追加することができます。最後に((...)の中に入れないでください。これは、一致する配列内に入れたくないからです。

meta.match(/\[([^\]]+)]\(([^)]+)\)/) 
        ^^^
+0

末尾の[]はエスケープする必要があります – Reid

+0

@Reid:すべきですか?それはあまり開いていないので動作します。 '' 'なので、あいまいではありません。 – pimvdb

+0

ああ、そうだよ。あなたは正しい。私は正規表現でそれをエスケープするのに慣れているだけで、私はそれを考慮していません。 – Reid

関連する問題