求高人帮忙写个正则表达式

zyc900329 2011-10-07 08:51:13
要匹配顶级域名和二级域名
比如xxx.xxx.xxx
任何地方不能含有中文
只允许字母(字母允许大小写)和数字
允许出现“-”减号 不允许出现其他符号
麻烦高手帮忙写下...
...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄袍披身 2011-10-08
  • 打赏
  • 举报
回复
简单点得

function matchdomain($domain){
preg_match('/[a-z0-9\-\.]+/i',$domain,$matches);
if (strlen($domain)==strlen($matches[0])){
return true;
}
return false;
}
zyc900329 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 phpnewnew 的回复:]

忘记了 有好多符号要过滤.晚点来写,有点事走开
[/Quote]
先谢谢了
黄袍披身 2011-10-07
  • 打赏
  • 举报
回复
忘记了 有好多符号要过滤.晚点来写,有点事走开
zyc900329 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 phpnewnew 的回复:]

没留意看

PHP code

function matchdomain($domain){
preg_match('/(([^@a-z0-9](w|-){0,61}?[a-z0-9]|[a-z0-9]).){1,}(aero|arpa|asia|biz|cat|com|coop|co|edu|gov|info|int|jobs|mil|mobi|museum|name|net|……
[/Quote]

不好意思啊大哥 还是不行 域名里允许有-符号的 现在-也不行了 ......
黄袍披身 2011-10-07
  • 打赏
  • 举报
回复
没留意看


function matchdomain($domain){
preg_match('/(([^@a-z0-9](w|-){0,61}?[a-z0-9]|[a-z0-9]).){1,}(aero|arpa|asia|biz|cat|com|coop|co|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])(.[a-z][a-z]){0,1}/', $domain, $matches);
if (strlen($domain)==strlen($matches[0])){
return true;
}
return false;
}
zyc900329 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 phpnewnew 的回复:]

这个不是正则的问题了自己处理一下不就可以了吗?养成自己尽量思考的习惯

PHP code

$StrArray=array('www.china.com','china.com','我是china.com');

foreach ($StrArray as $value){
if (matchdomain($value)){
echo $value;
}
}……
[/Quote]
不好意思 本来正则表达式就不太懂 现在又赶时间
您给出的这段代码还是不能过滤其他符号
比如$StrArray=array('www.china.com','chi@na.com','我是china.com');
麻烦帮忙看下
黄袍披身 2011-10-07
  • 打赏
  • 举报
回复
这个不是正则的问题了自己处理一下不就可以了吗?养成自己尽量思考的习惯


$StrArray=array('www.china.com','china.com','我是china.com');

foreach ($StrArray as $value){
if (matchdomain($value)){
echo $value;
}
}

//=============================
function matchdomain($domain){
preg_match('/(([a-z0-9](w|-){0,61}?[a-z0-9]|[a-z0-9]).){1,}(aero|arpa|asia|biz|cat|com|coop|co|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])(.[a-z][a-z]){0,1}/', $domain, $matches);
if (strlen($domain)==strlen($matches[0])){
return true;
}
return false;
}
ohmygirl 2011-10-07
  • 打赏
  • 举报
回复
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
zyc900329 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 phpnewnew 的回复:]

PHP code

$str='www.china.com';
$str2='china.com';
$str3='我china.com';
echo matchdomain($str);//www.china.com
echo matchdomain($str2);//china.com
echo matchdomain($str3);//china.com
//==============……
[/Quote]

符号好像没有过滤好
假如这样
<?php
$str='www.china.com';
$str2='我.china.com';
$str3='我chi@na.com';
echo matchdomain($str);//www.china.com
echo matchdomain($str2);//china.com
echo matchdomain($str3);//china.com
//=============================
function matchdomain($domain){
preg_match('/(([a-z0-9](w|-){0,61}?[a-z0-9]|[a-z0-9]).){1,}(aero|arpa|asia|biz|cat|com|coop|co|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])(.[a-z][a-z]){0,1}/', $domain, $matches);
return $matches[0];
}

?>

$str3就不行了... 麻烦再帮忙写下 域名里任何符号都不允许 只允许“.” “-”
黄袍披身 2011-10-07
  • 打赏
  • 举报
回复

$str='www.china.com';
$str2='china.com';
$str3='我china.com';
echo matchdomain($str);//www.china.com
echo matchdomain($str2);//china.com
echo matchdomain($str3);//china.com
//=============================
function matchdomain($domain){
preg_match('/(([a-z0-9](w|-){0,61}?[a-z0-9]|[a-z0-9]).){1,}(aero|arpa|asia|biz|cat|com|coop|co|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])(.[a-z][a-z]){0,1}/', $domain, $matches);
return $matches[0];
}
peter20091001 2011-10-07
  • 打赏
  • 举报
回复
[a-zA-Z0-9]匹配字母和数字

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧