WooCommerce phone 如果字段仅包含一个“0”字符,则数字字段验证不起作用

WooCommerce phone number field validation not working if the field contains only one "0" character

我写了一个正则表达式来验证 WooCommerce 中的 phone 数字。它适用于所有情况,除非该字段包含单个“0”字符。

可能是什么错误?

这是代码:

$post_value = $_POST['billing_phone'];   
if ( $post_value && ! preg_match( '/^(\+49)[0-9]{9,}$/', $post_value ) ) {      
    //error                                         
}

您的正则表达式与 0+490 不匹配。所以问题可能是当 POST 参数 'billing_phone' 为 0 时 if 语句中的某些内容不同。在 PHP if (int) 中对于除 0 和 false 以外的任何 int 都是 true对于 0,也许这就是问题所在?

所以你可以通过这样的方式解决这个问题:

if ( ($post_value || $post_value == 0) && ! preg_match( '/^(\+49)[0-9]{9,}$/', $post_value ) ) {

(免责声明:我对PHP一般不是很熟悉。)

您可以使用仅匹配单个零的交替来编写模式。

如果处理后不需要 +49 的单独捕获组,则可以省略它。

^(?:\+49\d{9,}|0)$

看到一个regex demo