如何禁止电话字段中的重复数字,如 1111111 或 222222

How to disallow repeated numbers in telephone field like 1111111 or 222222

我正在使用联系表 7,并希望禁止用户在 phone 字段中输入重复的数字,例如 1111111 或 2222222。

我使用下面的代码只输入 10 位数字。谁能帮我解决我应该更改或添加的内容。

// define the wpcf7_is_tel callback<br> 
function custom_filter_wpcf7_is_tel( $result, $tel ) {<br> 
  $result = preg_match( '/^\(?\+?([0-9]{0})?\)?[-\. ]?(\d{10})$/', $tel );<br>
  return $result; <br>
}<br>
         
add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );

首先,[0-9]{0} 看起来像一个拼写错误,因为这个模式不匹配任何东西,一个空字符串。您可能想要匹配一个可选的区号,三位数。所以,如果你是这个意思,请使用 \d{3}

接下来,要禁止与 \d{10} 匹配的数字中出现相同的数字,您只需将其重写为 (?!(\d){9})\d{10}.

牢记以上所述,解决方案是

function custom_filter_wpcf7_is_tel( $result, $tel ) {<br> 
  return preg_match('/^\(?\+?(?:\d{3})?\)?[-. ]?(?!(\d){9})\d{10}$/', $tel );<br>
}

参见regex demo