如何使用java脚本(或PHP)验证或过滤仅限TOP级URL /域? 它还必须接受新的域名扩展,例如:
这是正确的: http://www.something.bid 等...
这是不正确的: http://www.example1.com/blahblah/etc/something/index.php 等...
也是子域名 - 不允许!
它将在我的输入表单中使用java脚本或PHP进行验证。 非常感谢!
答案 0 :(得分:0)
行,
TLD意味着:.com
,.org
,.net
等......
子域意味着:www.NAME
,dev.DOMAIN_NAME
等......
SO网址为[SUB_DOMAIN].domain_name.[TLD]/[Extra URL PATH|QUERY_PARAMS]
哪个符合www.something.bd
,www
是子域名,可能您希望为www
子域名设置例外。
使用此正则表达式匹配网址,
/(https?:\/\/)?(([0-9a-z\_-]+)\.)?([a-z0-9\_-]+)\.([a-z]{2,})\/?(\/.+)?/
示例
var matches = 'http://www.something.bid'.match(/(https?:\/\/)?(([0-9a-z\_-]+)\.)?([a-z0-9\_-]+)\.([a-z]{2,})\/?(\/.+)?/)
结果
[“http://www.something.bid”,“http://”,“www。”,“www”,“某事”,“出价”,未定义]
matches[3] == sub-domain
matches[4] == domain
matches[5] == tld name
matches[6] == rest path
您现在可以检查子域是空还是特定值。
function checkUrl(url){
var regx = /(https?:\/\/)?(([0-9a-z\_-]+)\.)?([a-z0-9\_-]+)\.([a-z]{2,})\/?(.+)?/;
var matches = url.match( regx );
if ( matches.length == 7
&& (!matches[3] || matches[3] == 'www')
&& matches[4]
&& matches[5]
&& !matches[6] )
return true;
return false;
}
alert(checkUrl("http://something.bid/"));
alert(checkUrl("http://www.example1.com/blahblah/etc/something/index.php"));
快乐编码......: - )