プロが教える店舗&オフィスのセキュリティ対策術

入力された文字列がURLかどうかの判定はどのようにすれば良いですか?

URL:https://www.google.co.jp
URLではない:https://www.goog

何かメソッドがあるのでしょうか?
よろしくお願いします。


javascript

A 回答 (4件)

Javascript で処理するのなら、こんな感じですね。



━ ココから ━━━━━━━━━━━━━━━━━━━━━━━━
<script type="text/javascript" defer="defer">
/*<![CDATA[*/
function my_func(){
if ( !document.getElementById("my-url").value ) {
alert("empty...");
return;
}
else {
var my_input = document.getElementById("my-url").value;
var my_reg = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
var my_result = my_input.match(my_reg);
if ( my_result ) {
alert("the text is URL.");
}
else {
alert("the text is not URL.");
}
}
}
/*]]>*/</script>

<p>判定テスト</p>
<form id="my-form">
<input type="txet" size="60" id="my-url" value=""></input>
<input type="button" id="my-button" value="判定する" onClick="my_func()"></input>
</form>
━ ココまで ━━━━━━━━━━━━━━━━━━━━━━━━

コレが基本形として、後は適当に必要な処理を付け足していってください。

P.S.
URLの形は結構複雑と言うか、実に様々な形がありまして…。なので回答者No.1さんが仰る通り、例文の「https://www.goog」も現状、実在はしませんが形式的には合ってます。言わんとする所は分かります。要は標準的な「http://~」で始まる普通?のURLを判別したいと言う事なのでしょう。また通常の運用でも、ほぼその解釈で間違いありません。

この解答例だといわゆる「ドメイン名のみ」のURLでしか通りません。つまり「http://example.com/abc/123.html」だと「NO判定」となります。普通はURLと申しますと、末尾のファイル名まで込みで考えるものですが…例文がドメイン名のみで指定してあったので、それに従いました。

ディレクトリ階層やファイル名を含めた判別をするためには、もう少し複雑な正規表現処理をしないとなりません。まあそれは宿題と言うか、必要に応じて自分で考えてください。と言うか他人ではどの様な処理が必要なのか、分かりかねますので…。
    • good
    • 0

>実際にたっているかとか参照可能かという次元での質問です。



実際にアクセスで正常が返ってくるURLかどうかと言うことなら、実際にアクセスしてみないとわかりません。
ブラウザ上で動くJavaScriptではチェック不可能です。サーバーサイドなら可能。
    • good
    • 0

>実際にたっているかとか参照可能かという次元での質問です。



そうなると非常に面倒かつ思い処理です。

まず実際に立っているかどうかはdnsでaレコードをチェックする必要があるでしょう。
また単にdnsに登録されていてもhttpやhttpsが立っているかどうかは接続チェックを
してみないとわかりません。
また、本来は立っているが一時的にアクセスできない可能性も否定できません

任意の手法を用いれば不可能ではありませんが
それらの流れをjavascriptで行うことは現実的ではないので
「できない」というのが回答で問題ないとおもいます
    • good
    • 0

https://www.googだってURLだと思いますが?
(実際にたっているかとか参照可能かという次元の話ではなく)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

実際にたっているかとか参照可能かという次元での質問です。

お礼日時:2014/03/26 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!