は外のURLと一致するようにします javascriptのコメント機能。Regex "URL"コメント外
のURLのための正規表現は:
この例を与え((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)
:
/* http://goog.le */
http://goog.le
それだけで二と一致する必要があります。
私は成功せず、この正規表現で、これまでhereを試してみました:アドバイス
は外のURLと一致するようにします javascriptのコメント機能。Regex "URL"コメント外
のURLのための正規表現は:
この例を与え((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)
:
/* http://goog.le */
http://goog.le
それだけで二と一致する必要があります。
私は成功せず、この正規表現で、これまでhereを試してみました:アドバイス
ため
(/*)[^(*/)]*((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)
おかげで一般的には正規表現を解析し、この種のを行うのは難しい(確かに不可能ではない)だ - あなたが持っています入力のような前提を整えるのは順調です。
あなたの正規表現では、{1}
は削除できるので冗長です。
あなたはそれが*/
(無一致/*
付き)が続いない場合にのみ、URLに一致する次のようなものを、行うことができます。例えば、あなたが一致/*
を持たずにソースで*/
を持っている場合はもちろん
((mailto\:|(news|(ht|f)tp(s?))\://)\S+)(?!([^*/]|\*[^/]|/[^*])*\*/)
、これは失敗します。ロジックは、それがが*/
続いであれば、それはコメントで、おそらくということです
/* http://goog.le */ # this won't match
http://goog.le # this will match
http://google/ "*/fdsa" # this won't match!
私はあなたがよく形成されている入力に依存しているいくつかの方法で意思を取る任意の正規表現のアプローチを考える - あなたはJavaScriptを使用している場合は、それを使用することが可能である(
コメントはバランスがとれている、など何らかのXML構文解析が代わりに使用されていますか?これはより多くはであり、いずれの場合もコメントを無視できるようになります)。
リプレイスを使用して、http://jsfiddle.net/92ma8/のような文字列とエスケープで機能します。
この文字列で// remove comments
// if you want to remove single line comments as well add: |\/\/.*
var nocomments = code.replace(/("(?:[^"\\]*|\\.)*"|'(?:[^'\\]*|\\.)*')|\/\*[^]*?\*\//g, "$1");
// do your matching
var result = nocomments.match(/[a-z]+:\/\/\S+/gi);
:
/* http://aaa.com */
http://bbb.com
// http://ccc.com
http://ddd.com "will \"*/ /*work"
"/* http://eee.com */ works"
それは一致します
http://bbb.com
http://ccc.com
http://ddd.com
http://eee.com
良いアイデア+1。しかし、私は本当に正規表現のソリューションを検索 – Email
((?<!\/\*)) #Negative lookbehind
((mailto\:|(news|(ht|f)tp(s?))\://)\S+)(?!([^*]|\*[^/])*\*/)
(
?(1) # Ensure the negative lookbehind has matched (Embedded Condition)
(?!\*/) # Ensure the negative lookahead
)
は、ここに1つのライナー
((?<!\/\*))((mailto\:|(news|(ht|f)tp(s?))\://)\S+)(?!([^*]|\*[^/])*\*/)(?(1)(?!\*/))
@パヌッチャは、URLに一致しません。 – Email
.NETエンジンを使ってRegexBuddyを使ってテストしましたが、正常に動作しました。私は単純にあなたの正規表現を使用してURLにマッチさせました。あなたがあなたの質問で与えた "http://goog.le"の例のために、それは動作します。 –
だけでなく、内部の一致だろう文字列で十分でしょうか? – Qtax