不用正则表达式如何验证电话号码和手机号码的合法性?
不用正则表达式如何验证电话号码和手机号码的合法性?
------解决方案--------------------就是验证N位数字吧
"^\d{n}$"。
如果还要验证区号或者手机号码前的13X或15X就麻烦了。
------解决方案--------------------不用正则表达式的话,那就验证位数。system.string类的length属性。
不过还是建议用正则表达式!
------解决方案--------------------不使用正则表达式的办法就是自己实现一个正则表达式的雏形——一个自动机。
------解决方案--------------------你可以用一个状态迁移图来直观地表示一个状态机(参考数字电路或者离散数学课本,这里不好绘制)
所谓正则表达式解析器,无非就是根据正则模式自动构造这样一个自动机而已。
只要你能写出正则表达式,就一定能改写成“不用正则表达式”的形式。
这就好比,只要能写出高级语言,就一定能用机器语言改写。只要能写出机器语言,就一定可以用布尔表达式表示出来(从而构造出一个专用电路,而不使用CPU)。这也说明,从理论上来说,一切计算机能办到的事情,不用计算机也能办到。
在没有正则表达式API的语言中,你要做的就是手工展开这些代码。所以为什么不用现成的正则表达式呢。
经常在论坛上看到有人说不用递归写一个什么什么,不用委托写一个什么什么,不用正则表达式写一个什么什么。自以为自己找到了什么大发现,这个大发现的作用就在于可以用野路子的办法回避进一步的学习理论知识。实际上一点意义也没有。你应该做的是在学习了更高级的知识后将原来的知识融入到新的知识体系中来。
------解决方案--------------------你是想跟自己过不去呢,还是不会正则想绕过去?