【问题标题】:Validate URL jQuery验证 URL jQuery
【发布时间】:2013-02-19 04:05:41
【问题描述】:

似乎无法排序...

我正在尝试验证 2 个输入以验证两者都是有效的 URL。 IE。 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);
}

【问题讨论】:

    标签: jquery razor


    【解决方案1】:

    我的猜测是这条线是你的问题:

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

    因为它包含 @ 符号,razor 会拾取并尝试将其解析为 razor 语法。您可以通过像@@ 这样连续使用两次来转义该字符,在这种情况下,razor 只会吐出@,然后它将与您的正则表达式一起使用。

    这应该可行:

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

    【讨论】:

    • 我不是一个正则表达式的人,但你能确认剃刀视图引擎运行后只有 1 个@ 符号吗?
    • 是的……你和我。页面正在正确呈现 var。只有 1 个@
    • 一切都很好。我把一些课程混在一起了。感谢您的帮助!
    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 2014-03-01
    • 2012-09-08
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多