我希望用户在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' );
}
}
答案 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