Javascript url字段的验证
我在我的Web应用程序中输入了文本,用于输入不同用户的网站url。我应该对该字段进行哪些验证。 我想知道以下信息:- 1.我应该允许用户输入哪些字符。 2.我应该限制哪个角色 我们正在数据库中保存此url。 请注意,此数据将被其他一些应用程序用作url,它不使用url编码,并且我无权访问该应用程序的代码。我唯一能做的就是不允许用户有这样的性格 我正在使用jquery和javascript进行客户端验证说明:Javascript url字段的验证,javascript,html,url,Javascript,Html,Url,我在我的Web应用程序中输入了文本,用于输入不同用户的网站url。我应该对该字段进行哪些验证。 我想知道以下信息:- 1.我应该允许用户输入哪些字符。 2.我应该限制哪个角色 我们正在数据库中保存此url。 请注意,此数据将被其他一些应用程序用作url,它不使用url编码,并且我无权访问该应用程序的代码。我唯一能做的就是不允许用户有这样的性格 我正在使用jquery和javascript进行客户端验证说明: 协议(可选)和域的匹配 匹配协议,允许格式为http://或mailto: 允许电子邮件
var message;
var myRegExp =/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!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]*)?$/i;
var urlToValidate = "http://www.google.com";
if (!myRegExp.test(urlToValidate)){
message = "Not a valid URL.";
}else{
message = "Its a valid URL."
}
alert(message);
资料来源:
编辑
JQuery验证所做的工作超出了要求。如果URL验证是唯一需要的,那么这就是JQuery验证URL所使用的正则表达式:
/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/
您可以将字符串与正则表达式进行匹配,以检查是否有效: 以下是验证有效URL的模式:
/^(https?|ftp:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
如何使用它:
var url = 'http://google.com',
urlRegex = /^(https?|ftp:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
console.log(urlRegex.test(url));
检查这个-
不需要自己编写和验证正则表达式
$("#yourForm").validate({
rules: {
field: {
required: true,
url: true
}
}
});
请看一下这个jquery插件
http://jqueryvalidation.org/
试试这个,你能告诉我为什么这个问题被否决吗?请在否决我的问题时添加评论,这样我可以改进它。对于使用“ftp”等其他协议的URL,这将失败。