我需要使用以下模式限制电话号码:
0123456789,
1111111111,
2222222222,
3333333333,
4444444444,
etc.
我正在尝试用 PHP 来实现。
到目前为止,我想出了创建一个数组并在其中搜索以限制该手机号码。
有没有更好的方法来做同样的事情?
可能是一个正则表达式,也可能是 javascript。
我需要使用以下模式限制电话号码:
0123456789,
1111111111,
2222222222,
3333333333,
4444444444,
etc.
我正在尝试用 PHP 来实现。
到目前为止,我想出了创建一个数组并在其中搜索以限制该手机号码。
有没有更好的方法来做同样的事情?
可能是一个正则表达式,也可能是 javascript。
如果您不想像您提到自己那样不断更新一长串数字以进行检查,那么您基本上想要进行模式检测/模式识别。
根据您以前的知识,这可能是微不足道的,也可能是非常复杂的。
可以在这里找到一个小的开始......但是关于这个主题有很多非常厚的书;)
http://en.wikipedia.org/wiki/Pattern_recognition
所以“最简单”的方法可能是使用数组查找。缺点是您必须事先知道要列入黑名单的每个号码。一种中间方法是拥有一组您检查的无效格式的正则表达式,而不是在数组中包含实际数字。
因此,您可以使用正则表达式涵盖以下内容
ETC
根据可用的系统和地理位置,实际上可能可以对一些已知的数字数据库进行某种查找。但这可能会导致未列出的数字出现误报。
对于一个全局的、动态的、工作的系统来说,保持查找数组和对数据库进行查找都可能被证明变得非常难以处理,因为要保持工作支持的已知数据源的数量可能会增长到难以处理。
如果您需要阻止特定的电话号码,您可以这样做:
$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、2222222222 等,您可以这样做:
if(preg_match('/^(\d)\1{9}$/', $numberToTest)) {
// NOT VALID
}
else {
// VALID
}
带有正则表达式的 Javascript。当号码在受限列表中时,isRestricted 设置为 true:
var number = "0123456789";
var isRestricted = number.match( /0123456789|1111111111|2222222222|3333333333|4444444444/g ) != null;
我确信 regexps 与 PHP 的使用方式与使用preg_match的方式几乎相同。