我需要使用以下模式限制电话号码:
0123456789,
1111111111,
2222222222,
3333333333,
4444444444,
etc.
我正在尝试用PHP。
到目前为止,我想出了创建一个数组并在其中搜索以限制该移动号码。
还有更好的方法吗?
也许是正则表达式或者也许是javascript。
答案 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几乎相同。