List:
1.需求
2.代码
3.总结
前后台分离开发,就需要对传参的数据进行校验,你不知道前端会给你传过来什么乱七八糟的数据,如果在后面的逻辑里面出错了。那就是你后端的问题了。所以传参接收来的数据校验十分重要。我负责的模块很多地方都需要传用户手机号,然后给手机号发送验证码,或者调用第三方征信平台来获取凭证。所以,手机号的真实性尤为重要。前端只给我做了11位的验证,其实我觉得他应该做正则校验的。哎,我还是自己后台也写了一个验证。
package cn.cuco.common.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class PhoneFormatCheckUtils { /** * 大陆号码或香港号码均可 */ public static boolean isPhoneLegal(String str)throws PatternSyntaxException { return isChinaPhoneLegal(str) || isHKPhoneLegal(str); } /** * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数 * 此方法中前三位格式有: * 13+任意数 * 15+除4的任意数 * 18+除1和4的任意数 * 17+除9的任意数 * 147 */ public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException { String regExp = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(str); return m.matches(); } /** * 香港手机号码8位数,5|6|8|9开头+7位任意数 */ public static boolean isHKPhoneLegal(String str)throws PatternSyntaxException { String regExp = "^(5|6|8|9)\\d{7}$"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(str); return m.matches(); } }
总结