嘿,我有一个表单,其中的人进入子域名,如value.google.com,条目将是“有效”
我想运行一个正则表达式检查(我在正则表达式中非常可怕)执行以下操作:
第一个字符:不能是符号 中间字符:a-z,A-Z和符号 - 和。只要 最后一个字符:不能是符号
如果测试失败,我希望它吐出错误。
任何人都可以帮我解决这个问题吗?谢谢!
你们认为应该在那里有任何其他限制吗?
答案 0 :(得分:1)
你需要的是一个角色类。 :)
所以你要找的是: 的 ^ [A-ZA-Z] [A-ZA-Z \ - \] + [A-ZA-Z] $ 强>
因为你在PHP中可以设置i-flag,所以它变得不区分大小写并且这段代码应该可以工作:
if (preg_match("/^[a-z][a-z\-\.]+[a-z]$/i", "valid.google.com")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
提示:你还不应该包括数字吗? [A-Z0-9]
答案 1 :(得分:0)
如果TLD始终为com
,您应该能够:
/^(.*)\.[^.]+\.com$/
这将匹配最右边的.
字符之前的任何内容(.com
除外)。
但是,您可能希望使用简单的字符串操作(strrpos()
)来执行此操作。或者,你可以分开.
:
function extract_sub($domain) {
$parts = explode('.', $domain);
return implode('.', array_slice($parts, 0, -2));
}
(Demo)
答案 2 :(得分:0)
我认为这可能是最常见的情况。
$subdomain = "usersubdomain";
if(preg_match("/^[A-Z0-9]+$/i", $subdomain)) {
echo "Valid sub domain";
}else{
echo "Not a valid sub domain.";
}