使用0123456789,8888888888,9999999999等模式限制电话号码

时间:2013-04-24 06:43:55

标签: php validation

我需要使用以下模式限制电话号码:

0123456789, 
1111111111, 
2222222222, 
3333333333, 
4444444444, 
etc.

我正在尝试用PHP。

到目前为止,我想出了创建一个数组并在其中搜索以限制该移动号码。

还有更好的方法吗?

也许是正则表达式或者也许是javascript。

3 个答案:

答案 0 :(得分:2)

如果您需要屏蔽特定的电话号码,可以执行以下操作:

$numberToTest = [...]; // this is your user input number to test

$notAllowed = array(
  '0123456789',
  '1111111111',
  '2222222222',
  // and so on
);

if(in_array($numberToTest, $notAllowed)) {
  // NOT VALID
}
else {
  // VALID
}

匹配所有数字,如1111111111,222222222等,你可以这样做:

if(preg_match('/^(\d)\1{9}$/', $numberToTest)) {
  // NOT VALID
}
else {
  // VALID
}

答案 1 :(得分:2)

如果您不想继续更新一长串数字以进行检查,就像您提到自己一样,您基本上想要进行模式检测 / 模式识别。< / p>

根据您以前的知识,这可以是从琐碎到非常复杂的一切。

这里可以找到一个小小的开头......但是这个主题上有很多很厚的书;)

http://en.wikipedia.org/wiki/Pattern_recognition

所以“最简单”的方法可能是使用数组查找。缺点是您必须事先知道要列入黑名单的每个号码。中间方法是使用无效格式的 regexps 数组,而不是在数组中包含实际数字。

所以你可以使用正则表达式来覆盖像

这样的东西
  • 要简短的数字
  • 数字到长
  • 只有相同数字的数字

根据可用的系统和地理位置,实际上可以对某些已知的数字数据库进行某种查找。但这可能导致未上市数字的误报。

对于一个全局的,动态的工作系统,保持查找数组并对数据库进行查找可能会变得非常难以处理,因为保持工作支持的已知数据源的数量可能会变得很大而无法处理。

答案 2 :(得分:0)

带有regexp的Javascript。当数字在限制列表中时,isRestricted设置为true:

var number = "0123456789";
var isRestricted = number.match( /0123456789|1111111111|2222222222|3333333333|4444444444/g ) != null;

我确信regexps与PHP的工作方式与使用preg_match几乎相同。