我有一个表单,我希望用户输入一个完整的 URL,该 URL 直接指向 PDF(不是包含 pdf 的页面)。
目前我正在测试(并在必要时添加)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”更好吗?