顶级URL表单验证

时间:2016-03-29 17:01:24

标签: javascript php

如何使用java脚本(或PHP)验证或过滤仅限TOP级URL /域? 它还必须接受新的域名扩展,例如:

这是正确的: http://www.something.bid 等...

这是不正确的: http://www.example1.com/blahblah/etc/something/index.php 等...

也是子域名 - 不允许!

它将在我的输入表单中使用java脚本或PHP进行验证。 非常感谢!

1 个答案:

答案 0 :(得分:0)

行, TLD意味着:.com.org.net等......

子域意味着:www.NAMEdev.DOMAIN_NAME等......

SO网址为[SUB_DOMAIN].domain_name.[TLD]/[Extra URL PATH|QUERY_PARAMS]

哪个符合www.something.bdwww是子域名,可能您希望为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"));

快乐编码......: - )