0

ユーザーに、PDF (pdf を含むページではなく) に直接つながる完全な URL を入力してもらいたいフォームがあります。

現在、http/https リンクをテストしています (必要に応じて追加しています)。

var str = textfield.value;

//test for http/https and add it if not there
var httpsInc = str.indexOf('https://') !== -1;
var httpInc = str.indexOf('http://') !== -1;
if ((httpsInc == false) & (httpInc == false)) {
    textfield.value = "http://" + str;
    var str = textfield.value;
}

次に、それが有効な URL であることをテストします (こちらの別の投稿に基づく):

var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
    '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
    '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
    '(\\#[-a-z\\d_]*)?$','i'); // fragment locator

if(!pattern.test(str)) {
    alert("Please enter a valid URL.");
    testresults=1;
} else {
    testresults=0;
}
return (testresults);

次に、.pdf [str.indexOf('.pdf') !== -1 のようなもの]のテストを追加するつもりでしたが、これを行うためのより良い方法が必要であると考えました。上記の RegExp は、私が推測するこのすべてのテストを実行できる可能性があります (.pdf が最後にあることなどをテストします) が、それを変更する方法がわかりません。それを変更するか、文字列の最後の 4 文字が「.pdf」であることを確認するだけのほうがよいですか?

4

0 に答える 0