您需要使用delimiters 为了让你的正则表达式工作。
从上面的链接
使用PCRE函数时,要求图案用分隔符括起来。分隔符可以是任何非字母数字、非反斜杠、非空白字符。
所以在你的情况下,你可以有这样的东西。注意我是如何使用/ 分隔正则表达式
add_filter( \'registration_errors\', \'myplugin_registration_errors\', 10, 3 );
function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {
if (! preg_match(\'/( |^)[^ ]+@mydomain\\.co\\.uk( |$)/\', $user_email )) {
$errors->add( \'invalid_email\', __( \'ERROR: Only valid "mydomain" email address is allowed.\' ));
$user_email = \'\';
}
return $errors;
}
我注意到您在正则表达式的开头和结尾都允许空白。
也许您希望使用这个正则表达式来避免允许空白(除非这是期望的结果)
if (! preg_match(\'/^[a-zA-Z0-9._-]+@mydomain\\.co\\.uk$/\', $user_email )) {...
^ 表示从开始[a-zA-Z0-9._-] 表示任何字母数字字符和点. 强调_ 和dash- 允许使用字符+ 指一个或多个前述标记,[] 在这种情况下\\. 转义点,使其不被解释为任何字符$ 也请注意,由于您过滤到WP注册验证机制,因此您正在添加到当前检查中,因此从技术上讲,WP将在您询问的内容上检查这是否是一封有效的电子邮件