一个换行符引发的问题

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

 

 

 

你可能感兴趣的:(问题)