验证特定网址

时间:2016-02-22 06:14:53

标签: javascript regex validation

我正在为我的朋友制作一个表单,要求所有访问者填写特定的域名。 我想要的是,他们要编写一个以https://specificname.com/id/WordOrNumber开头的链接并继续使用ID。示例case 'url': if ('http://' === $value) $value = ''; if ($value && !preg_match('/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(%[\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|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(([a-z]|\d|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])*([a-z]|\d|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])))\.)+(([a-z]|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(([a-z]|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])*([a-z]|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(%[\da-f]{2})|[!\$&\'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(%[\da-f]{2})|[!\$&\'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(%[\da-f]{2})|[!\$&\'\(\)\*\+,;=]|:|@)|[\x{E000}-\x{F8FF}]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\x{00A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}])|(%[\da-f]{2})|[!\$&\'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/iu', $value)) return frmd_error('Please enter a valid URL.', $elm['name']); break; 。我需要像regex或validator这样的东西来验证他们填写表格的链接。

这是我现在使用的字符串。

sys.stdout.flush()

此代码工作正常,但它将接受访问者填写的所有类型的域名。 请仅使用正则表达式或验证器回复,因为我不知道要编辑什么。

我编码很糟糕。

2 个答案:

答案 0 :(得分:1)

如果要确保输入的URL与特定前缀匹配,则可以跳过正则表达式并仅测试子字符串,例如:

var validPrefix = 'https://example.com';
if (enteredUrl.substring(0, validPrefix.length) != validPrefix){
    alert('Invalid URL.');
}

如果您想允许URL的微小变化,例如有/无WWW或http和https,那么您可以使用一个简单的正则表达式来定义这些变量作为可选部分。

var urlRegex = /https?:\/\/(www.)?example.com/;
if (!urlRegex.test(enteredUrl)){
    alert('Invalid URL.');
}

如果您需要验证整个URL格式而不仅仅是前缀,则需要根据您需要匹配的格式标准来扩展正则表达式。一些正则表达式教程应该可以帮助您确定如何匹配您需要的内容。例如,要在域之后添加ID号,您可以执行以下操作:

var urlRegex = /https?:\/\/(www.)?example.com\/\d+/;
if (!urlRegex.test(enteredUrl)){
    alert('Invalid URL.');
}

答案 1 :(得分:0)

如果你的前缀和输入url是

var validPrefix = "validDomain.com";

var inputURL = "www.validDomain.com/context1";

然后您需要做的就是

if ( inputURL.indexOf( validPrefix ) == -1 )
{
   alert( "No, input URL doesn't contain valid domain prefix" );
}
else
{
   alert( "Yes, input URL contains valid domain prefix" );
}