php正则表达式域名字符串有www和顶级域名

时间:2011-01-04 09:22:40

标签: php regex string dns

当谈到正则表达式时,我是业余爱好者,但我认为我有以下三个域名

www.google.com
www.google.co.uk
google.com

我想创建一些正则表达式,测试该域名是否有www以及.co.uk.com

有人知道会测试一些正则表达式吗?

4 个答案:

答案 0 :(得分:3)

你不需要正则表达式,你可以使用strpos女巫比正则表达式快。

if ( strpos('www.', $mystring) !== false ) {
    //www was found in the string
} else {
    //www was not foun in the string
}

如果你真的想慢一点并使用正则表达式,你可以像这样测试所有这些

preg_match('/www|\.com|\.co\.uk/', $mystring);

例如,如果你想为www而不是.com应用不同的逻辑,你可以使用

preg_match('/www/', $string);
preg_match('/\.com/', $string);
preg_match('/\.co\.uk/', $string);

答案 1 :(得分:1)

试试这个:

/^www.*(?:com|co\.uk)$/

答案 2 :(得分:1)

根据我对您的问题的理解,该域名需要以www开头,并以.co.uk.com结尾。所以这是RegExp:

<?php
    $domains = array(
        "www.google.com",
        "www.google.co.uk",
        "google.com"
    );
    foreach($domains as $domain){
        echo sprintf(
            "%20s -> %d\n",
            $domain,
            preg_match("@^www\\..+(\\.co\\.uk|\\.com)$@", $domain)
        );
    }
?>

答案 3 :(得分:0)

简单

$ar = array();
$t = array("www.google.com","www.google.co.uk","google.com","www.google");
foreach ($t as $str) {
    if (preg_match('/^www\.(.*)(\.co.uk|\.com)$/',$str)) {
        echo "Matches\n";
    }
}

条件

$ar = array();
$t = array("www.google.com","www.google.co.uk","google.com","www.google");
foreach ($t as $str) {
    switch (true) {
        case preg_match('/^www\.(.*)$/',$str) :
        // code
        case preg_match('/^(.*)(\.co.uk)$/',$str) :
        // code
        case preg_match('/^(.*)(\.com)$/',$str) :
        // code
        break;
    }
}