我有以下正则表达式
(?!:\/\/)([a-zA-Z0-9-_]+\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\.[a-zA-Z]{2,11}?$
可以识别诸如 moo.foo 之类的域,但不能识别诸如以下情况:
festelån.net
有一些Unicode字符http://hellöthere.com/
或出现 http 或 https 协议以及斜杠的情况。如何修改它以识别那些情况?
我对regex不好,感谢您的帮助。
如果您想玩此示例,请online real time编辑该示例。
答案 0 :(得分:0)
这是我在OpenSource项目中提供的功能,可能会对您有所帮助。我已经使用PHP filtar_var函数来应用验证。
public function ValidateHost($Host)
{
if(isset($Host))
{
if(!is_null($Host) && !empty($Host))
{
if(strstr($Host, ".") && strlen($Host) > 3 && strlen($Host) < 255 && (!strstr($Host, "..")) && (!strstr($Host, " "))
&& preg_match('/[a-zA-Z]+/', $Host) && (!strstr($Host, "@")) &&
!(preg_match('/([^.]*[.][0-9]*$)/', $Host)) && filter_var(FILTER_VALIDATE_URL) == true)
return Config::RET_OK;
else return Config::INVALID_HOST_NAME;
}
else return Config::INVALID_NULL;
}
else return Config::INVALID_NULL;
}
如果您想退房,这是我的项目:InfraTools