验证URL jQuery

时间:2013-02-18 20:02:14

标签: jquery razor

似乎无法将此排序......

我正在尝试验证2个输入,以验证两者都是有效的网址。即http://www.somename.com

虽然它破坏了我的应用程序(ASP.NET RAZOR)。说一些解析问题并指出domainPattern var是罪魁祸首。

任何猜测?

// validate domain url
var url = $('.sb-terms-url, .sb-privacy-url').val();
var domainPattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if (!domainPattern.test(url)) {
    $('.sb-privacyalert').fadeIn(600);

}
else {
    $(this).trigger('reveal:close');

    $('.terms-link').attr('href', $('.sb-terms-url').val());
    $('.privacy-link').attr('href', $('.sb-privacy-url').val());

    $('.sb-privacyalert').fadeOut(300);
}

1 个答案:

答案 0 :(得分:1)

我的猜测是这一行是你的问题:

var domainPattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

因为它包含剃刀选取的@符号,并尝试将其解析为剃刀语法。你可以通过连续两次使用它来转义那个角色,例如@@,在这种情况下,剃刀只吐出@,然后它将与你的正则表达式一起使用。

这应该有效:

var domainPattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@@!\-\/]))?/;