最小电话号码位数Woocommerce结帐

时间:2018-11-23 03:38:39

标签: php regex wordpress woocommerce phone-number

我希望用户在Woocommerce结帐中至少输入7个电话号码。下面的函数有效,但是它包含空格,因此,如果用户输入6个数字和1个空格,它将被算为7。如何更改函数,使其仅计算数字而不是空格,因此用户必须输入至少7个数字

// validation for Billing Phone checkout field
add_action('woocommerce_checkout_process', 'custom_validate_billing_phone');
function custom_validate_billing_phone() {
    $is_correct = preg_match('/^[0-9 \-]{7}/i', $_POST['billing_phone']);
    if ( $_POST['billing_phone'] && !$is_correct) {
        wc_add_notice( __( 'Phone Number must be <strong>minimum 7 numbers</strong>.' ), 'error' );
    }
}

3 个答案:

答案 0 :(得分:1)

我想出了解决办法。

$is_correct = preg_match('/^[0-9\D]{7}/i', $_POST['billing_phone']);

答案 1 :(得分:0)

$ is_correct = preg_match('/ ^ [0-9-] {7} / i',$ _POST ['billing_phone']);

应该工作

答案 2 :(得分:0)

您可以使用以下正则表达式。它只计算数字:

^(?:\D*?\d\D*?){7}$

它从字符串的开头开始,然后创建一个非捕获组,该组与 可选任意数量的非数字,数字和可选任意数量的非数字。恰好需要其中的7个。

这意味着,它仅对数字进行计数,而忽略计数中的非数字。

匹配示例:

1234567
1 23 45 67
123-4567

不匹配的示例:

123 456
12-34-56-78