私はこの正規表現を作成しました。これは、たとえばRegExrでテストしたときに必要なことを正確に実行します。
^https?:\/\/(www\.)?(test\.yahoo\.com|sub\.yahoo\.com)?(?!([a-z0-9]+\.)?(localhost|yahoo\.com))(.*)?
ただし、JavaScriptでテストすると、式が無効であると表示されます。何時間もデバッグした後、この式がjavascriptで機能することがわかりました。
^https?:\/\/(www\.)?(test\.yahoo\.com|sub\.yahoo\.com)?(?![a-z0-9]+\.)?(localhost|yahoo\.com)(.*)?
しかし、これは私が望むことをしません(再びRegExrでテストします)。
JavaScriptで最初の式を使用できないのはなぜですか?そして、どうすれば修正できますか?
7月25日更新
情報不足でごめんなさい。私が正規表現を使用している方法は、正規表現を使用して選択できるjQuery拡張機能を使用することです。スクリプトはここで見ることができます:http://james.padolsey.com/javascript/regex-selector-for-jquery/
私が機能させようとしている特定のコードは次のとおりです。
$('a:regex(href, ^https?:\/\/(www\.)?(test\.yahoo\.com|sub\.yahoo\.com)?(?!([a-z0-9]+\.)?(localhost|yahoo\.com))(.*)?)').live('click', function(e) {
リンクされたjQueryプラグインを含めた後。私がテストしているテキスト文字列は次のとおりです。
- http://yahoo.com
- http://google.dk
- http://subdomain.yahoo.com
- http://test.yahoo.com
- http://localhost.dk
- http://sub.yahoo.com/lalala
「http://google.dk」、「http://test.yahoo.com」、「http://sub.yahoo.com/lalala」と一致するはずの場所-RegExrを使用しているが失敗した場合(無効な式)jQueryプラグインを使用します。