似乎无法将此排序......
我正在尝试验证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);
}
答案 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#!:.?+=&%@@!\-\/]))?/;