ユーザーに、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」であることを確認するだけのほうがよいですか?