4829320d3ec526b0593381815a72a3ecfb519516.svn-base 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.example.myapplication.utils;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. /**
  5. * 验证规则
  6. */
  7. public class MatchUtils {
  8. /**
  9. * 手机号的正则
  10. * "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
  11. */
  12. private static final String MOBILE = "[1][34578]\\d{9}";
  13. /**
  14. * 是否为6位数字的验证码
  15. */
  16. public static final String MATCH_VERIFYCODE = "[0-9]{6}";
  17. /**
  18. * 是否为8位数字的邮箱验证码
  19. */
  20. public static final String MATCH_MAIL_VERIFYCODE = "[0-9]{8}";
  21. private static final String PHONE_NUMBER_REGEX = "^1\\d{10}$";
  22. /**
  23. * 验证是否是手机号
  24. *
  25. * @param phoneNumber
  26. * @return
  27. */
  28. public static boolean isPhoneNumber(String phoneNumber) {
  29. Pattern pattern = Pattern.compile(PHONE_NUMBER_REGEX);
  30. Matcher matcher = pattern.matcher(phoneNumber);
  31. return matcher.matches();
  32. }
  33. /**
  34. * 验证手机号是否符合规则
  35. *
  36. * @param mobile
  37. * @return
  38. */
  39. public static boolean isMobileRight(String mobile) {
  40. String reg = MOBILE;//
  41. Pattern p = Pattern.compile(reg);
  42. Matcher m = p.matcher(mobile);
  43. return m.matches();
  44. }
  45. /**
  46. * 判断密码是否为6~20位数字加字母
  47. *
  48. * @param pwd
  49. * @return
  50. */
  51. public static boolean isPwdRight(String pwd) {
  52. String reg1 = "[a-zA-Z0-9]{6,12}";//6至12位密码
  53. // String reg2 = "[a-zA-Z]{8,32}";
  54. // String reg3 = "[0-9]{8,32}";//8至32位密码
  55. boolean is6To20NumOrWord = Pattern.compile(reg1).matcher(pwd).matches();
  56. // boolean is6To20Num = Pattern.compile(reg2).matcher(pwd).matches();
  57. // boolean is6To20Word = Pattern.compile(reg3).matcher(pwd).matches();
  58. return is6To20NumOrWord /* && (!is6To20Num) && (!is6To20Word) */;
  59. }
  60. /**
  61. * 判断密码是否为6~20位数字加字母
  62. *
  63. * @param pwd
  64. * @return
  65. */
  66. public static boolean isPassRight(String pwd) {
  67. String reg1 = "/^(?![a-z]+$)(?!\\d+$)\\S{6,20}$/i";
  68. return Pattern.compile(reg1).matcher(pwd).matches();
  69. // return isPwdRight(pwd);
  70. }
  71. /**
  72. * 验证码是否正确
  73. *
  74. * @param verifycationCode
  75. * @return
  76. */
  77. public static boolean isVerifycationCodeRight(String verifycationCode) {
  78. return Pattern.compile(MATCH_VERIFYCODE).matcher(verifycationCode).matches();
  79. }
  80. /**
  81. * 邮箱验证码是否正确
  82. *
  83. * @param verifycationCode
  84. * @return
  85. */
  86. public static boolean isMailVerifyCodeRight(String verifycationCode) {
  87. return Pattern.compile(MATCH_MAIL_VERIFYCODE).matcher(verifycationCode).matches();
  88. }
  89. /**
  90. * 邮箱格式是否正确
  91. *
  92. * @param email
  93. * @return
  94. */
  95. public static boolean isEmialRight(String email) {
  96. // 说明:
  97. // ①/内容/i 构成一个不区分大小写的正则表达式;^ 匹配开始;$ 匹配结束。
  98. // ②[a-z] E-Mail前缀必需是一个英文字母开头
  99. // ③([a-z0-9]*[-_]?[a-z0-9]+)*
  100. // 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的,*表示0个或者多个。
  101. // ④*表示0个或多个前面的字符.
  102. // ⑤[a-z0-9]* 匹配0个或多个英文字母或者数字;[-_]? 匹配0个或1“-”,因为“-”不能连续出现。
  103. // ⑥[a-z0-9]+ 匹配1个或多个英文字母或者数字,因为“-”不能做为结尾
  104. // ⑦@ 必需有个有@
  105. // ⑧([a-z0-9]*[-_]?[a-z0-9]+)+
  106. // 见上面([a-z0-9]*[-_]?[a-z0-9]+)*解释,但是不能为空,+表示一个或者为多个。
  107. // ⑨[\.] 将特殊字符(.)当成普通字符;[a-z]{2,3} 匹配2个至3个英文字母,一般为com或者net等。
  108. // ⑩([\.][a-z]{2})? 匹配0个或者1个[\.][a-z]{2}(比如.cn等)
  109. // 我不知道一般.com.cn最后部份是不是都是两位的,如果不是请修改{2}为{起始字数,结束字数}
  110. String reg = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
  111. // String reg =
  112. // "/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\\.][a-z]{2,3}([\\.][a-z]{2})?$/i";
  113. return Pattern.compile(reg).matcher(email).matches();
  114. }
  115. /**
  116. * 判断是否为网址
  117. *
  118. * @param content
  119. * @return
  120. */
  121. public static boolean isHtml(String content) {
  122. String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
  123. Pattern wikiWordMatcher = Pattern.compile(str);
  124. boolean isOk = wikiWordMatcher.matcher(content).matches();
  125. return isOk;
  126. }
  127. /**
  128. * 名字是否符合规则(4-30个汉字)
  129. *
  130. * @param name
  131. * @return
  132. */
  133. public static boolean isNameRight(String name) {
  134. return Pattern.compile("^.{4,30}$").matcher(name).matches();//4-30个所有字符
  135. // return Pattern.compile("[\u4E00-\u9FA5]{4,30}").matcher(name).matches();
  136. }
  137. }