一个换行符引发的问题

     今天收到邮件,说甲方的运维人员通过我们的门户系统导入一批数据,但有个别号码在下一个运行模块中出现异常,查原因是甲方导入的数据中,个别手机号码字段后存在不可见换行符。检查导入模块的代码,有做校验,逻辑大概如下(java):

 

 Pattern msisdn = Pattern
                     . compile("^((13[0-9])|(15[0-9])|(18[0-9]))\d{8}$"if (a == null || "".equals(a)) {
                System. out.println( "移动号码不能为空;<br/>"else if (!msisdn.matcher(a).find()) {
                System. out.println( "无效的移动号码;<br/>"else {
                System. out.println( "号码正确"

   直觉我也觉得它能仅匹配出11位数字字符,但经过实验发现,它居然忽视了换行符(有和没有,都一样)。 

这个情况在perl中也存在,查了一下资料,如果要匹配换行符,需要加特别标识,如perl中如何要用 ‘.’ 匹配换行符,需要使用/m /s , 也就是说,它默认就忽略换行符。

 

 

 

此条目发表在java, 技术, 未分类分类目录。将固定链接加入收藏夹。
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票