【发布时间】:2021-08-02 08:15:51
【问题描述】:
我从 PHP 开始,我正在为域名编写一个简短的过滤器,其中表单将只接受一个没有任何其他输入的域名,例如点、开头或结尾的连字符或特殊字符。
例子:
有效
域名
域名
域名
等等
无效
域名.com
域名..com
域名.de
domain.co.uk
-域名
到目前为止我的代码:
add_filter( 'gform_field_validation_6_1', 'custom_validation', 10, 4);
function custom_validation( $result, $value, $form, $field ) {
$pattern = "(.de|.com|.cz)";
//$pattern = "^(?!\-)(?:(?:[a-zA-Z\d][a-zA-Z\d\-]{0,61})?[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$";
if ( preg_match ( $pattern, $value ) ) {
$result['is_valid'] = false;
$result['message'] = 'Please enter only valid domain name';
} else {
$result['is_valid'] = true;
$result['message'] = '';
}
return $result;
}
代码中的注释部分:
$pattern = "^(?!-)(?:(?:[a-zA-Z\d][a-zA-Z\d- ]{0,61})?[a-zA-Z\d].){1,126}(?!\d+) 是我在 SO 的其他地方找到的,但它验证了域名为 top级域,我不想要。
【问题讨论】:
-
好吧,只是域名
[\w-]+似乎就足够了。