我正在用Perl做web开发。我需要做所有国家的电话号码验证。是否有开放源码的Perl模块可以执行以下操作?
例如: country =马来西亚,如果用户输入电话号码= +60127008007,验证后返回this是马来西亚的有效手机号码,其中:在马来西亚本地,我们直接拨打: 0127008007。"+6“是国际代码。
而如果用户输入的电话号码= +600127008007,则返回无效的电话号码。因为在马来西亚当地没有这样的数字: 00127008007。
任何免费的模块都可以做到这一点,无论是在CPAN中还是在其他地方?
发布于 2009-03-16 13:31:46
看看Number::Phone::NANP (lNumber::Phone::NANP)。我猜您将为未覆盖的国家/地区添加新的子类。
发布于 2009-03-16 14:10:56
验证假设您知道的比输入数据的人多,但在这种情况下您不知道。比方说,我是一个在加拿大签订长期合同的美国人。我一直保留着我的手机,因为我工作的公司正在支付漫游费。当我访问您的网站并输入我的美国手机号码和加拿大地址时,您的验证脚本会声明它是无效的,而事实并非如此。这会导致客户的困惑和愤怒。
如果有效的电话号码(或电子邮件)是您的业务的绝对要求,您必须致电(或通过电子邮件发送)该号码(或电子邮件地址)的人员,并让他们输入您给他们的代码。有一个hardware/software被设计为自动呼叫号码并向接收者提供消息。你可以使用像Festival这样的文本转语音软件在电话上播放一个特殊的键,然后让他们在你的网站上输入它,以确认他们可以访问该电话。即使这样也不是万无一失的,因为我可以买一个扔掉的手机,或者创建一个扔掉的电子邮件地址。
发布于 2009-03-17 08:32:49
验证的重点是帮助用户捕获在输入过程中强制他们使用特定格式的输入错误。
在某一时刻,验证不再对用户有帮助。通常,这也是验证规则的异常变得太多而程序员无法处理的点,因为他进入了回报递减的境地。
为什么需要经过验证的电话号码?您确定用户不会尝试在同一字段中输入两个数字并沮丧地放弃吗?你确定用户不会输入像"555-5555 (要求史蒂夫)“或"555-5555 (分机123)”之类的东西或其他完全有效的输入吗?您确定自己足够聪明,能够预测用户可能需要在该字段中输入的每个输入内容吗?
不要试图智胜你的用户。帮帮他。:)
https://stackoverflow.com/questions/650396
复制相似问题