当谈到正则表达式时,我是业余爱好者,但我认为我有以下三个域名
www.google.com
www.google.co.uk
google.com
我想创建一些正则表达式,测试该域名是否有www
以及.co.uk
或.com
有人知道会测试一些正则表达式吗?
答案 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;
}
}