我正在使用Code-igniter开发应用程序。
我想使用J Query或JavaScript验证文本框只允许在用户提交表单时输入以下URL。
http://
https://
ftp://
ftps://
file://
market://
linkedin://
fb://
geo:
maps://
有没有办法做到这一点?
答案 0 :(得分:0)
function is_url(str)
{
regexp = /^(?:(?:https?|ftps?|file?|market?|linkedin?|fb?|maps?):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
if (regexp.test(str))
{
return true;
}
else
{
return false;
}
}
答案 1 :(得分:0)
尝试在检查输入有效性的函数中使用此正则表达式。
/^(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//g
但做反向逻辑:
如果您想阻止输入中的任何位置,请删除正则表达式中的前导^
以匹配即使URL不是字符串的开头。
喜欢:/(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//gm
以下是整个解决方案的简单版本: fiddlejs
主要是URL验证:
$("#urlInput").focusout(function (){
var inputElement = $("#urlInput");
var regexp = /(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//gm;
if (regexp.test(inputElement.val())){
inputElement.val("");
alert("This is nto a valid URL")
}
});
它与
绑定<input id="urlInput" type="url">
您可能希望以更友好的方式重新编写错误报告,但这是另一个故事。