我正在尝试验证URL字段,我使用了regex
,它在线工作正常但在我的视图(脚本)中每次都会得到true
结果。以下是我的代码。
$('.text-attribute.gt_2_').blur(function () {
var urlRegExp = /^(ftp:\/\/|http:\/\/|https:\/\/)?(\w+:{0,1}\w*@@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@@!-\/]))?$/;
//var urlRegExp = new RegExp("((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@@.\w_]*)#?(?:[\w]*))?)");
var url = $(this).val();
alert(url);
var result = urlRegExp.test(url);
alert(result);
if ($.trim($(this).val()) != "" && urlRegExp.test($(this).val())==false) {
alertBox("Please provide valid website address.");
$(this).val('');
$(this).focus();
}
});
答案 0 :(得分:1)
你的正则表达式使大多数组都是可选的,几乎每次都给出了
<强>正则表达式强>
/^(ftp:\/\/|http:\/\/|https:\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!-\/]))?$/;
让我们分手,你有5组
(ftp:\/\/|http:\/\/|https:\/\/)?
是可选的
(\w+:{0,1}\w*@)?
是可选的
(\S+)
寻找一些非空间
(:[0-9]+)?
是可选的
(\/|\/([\w#!:.?+=&%@!-\/]))?
再次可选
所以,为了简化你的表达,你正在寻找一些非空格字符。