0

我有一个表单,我希望用户输入一个完整的 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”更好吗?

4

0 回答 0