java常用正则表达式

举报
再见孙悟空_ 发表于 2022/01/13 01:02:06 2022/01/13
【摘要】 import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 验证工具类 * @author admin * */public class Validation { //------------------常量定义 /** ...


  
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. /**
  4. * 验证工具类
  5. * @author admin
  6. *
  7. */
  8. public class Validation {
  9. //------------------常量定义
  10. /**
  11. * Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
  12. */
  13. //public static final String EMAIL = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";;
  14. public static final String EMAIL = "\\w+(\\.\\w+)*@\\w+(\\.\\w+)+";
  15. /**
  16. * 电话号码正则表达式= (^(\d{2,4}[-_-—]?)?\d{3,8}([-_-—]?\d{3,8})?([-_-—]?\d{1,7})?$)|(^0?1[35]\d{9}$)
  17. */
  18. public static final String PHONE = "(^(\\d{2,4}[-_-—]?)?\\d{3,8}([-_-—]?\\d{3,8})?([-_-—]?\\d{1,7})?$)|(^0?1[35]\\d{9}$)" ;
  19. /**
  20. * 手机号码正则表达式=^(13[0-9]|15[0-9]|18[0-9])\d{8}$
  21. */
  22. public static final String MOBILE ="^(13[0-9]|15[0-9]|18[0-9])\\d{8}$";
  23. /**
  24. * Integer正则表达式 ^-?(([1-9]\d*$)|0)
  25. */
  26. public static final String INTEGER = "^-?(([1-9]\\d*$)|0)";
  27. /**
  28. * 正整数正则表达式 >=0 ^[1-9]\d*|0$
  29. */
  30. public static final String INTEGER_NEGATIVE = "^[1-9]\\d*|0$";
  31. /**
  32. * 负整数正则表达式 <=0 ^-[1-9]\d*|0$
  33. */
  34. public static final String INTEGER_POSITIVE = "^-[1-9]\\d*|0$";
  35. /**
  36. * Double正则表达式 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
  37. */
  38. public static final String DOUBLE ="^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$";
  39. /**
  40. * 正Double正则表达式 >=0 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 
  41. */
  42. public static final String DOUBLE_NEGATIVE ="^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$";
  43. /**
  44. * 负Double正则表达式 <= 0 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
  45. */
  46. public static final String DOUBLE_POSITIVE ="^(-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*))|0?\\.0+|0$";
  47. /**
  48. * 年龄正则表达式 ^(?:[1-9][0-9]?|1[01][0-9]|120)$ 匹配0-120岁
  49. */
  50. public static final String AGE="^(?:[1-9][0-9]?|1[01][0-9]|120)$";
  51. /**
  52. * 邮编正则表达式 [0-9]\d{5}(?!\d) 国内6位邮编
  53. */
  54. public static final String CODE="[0-9]\\d{5}(?!\\d)";
  55. /**
  56. * 匹配由数字、26个英文字母或者下划线组成的字符串 ^\w+$
  57. */
  58. public static final String STR_ENG_NUM_="^\\w+$";
  59. /**
  60. * 匹配由数字和26个英文字母组成的字符串 ^[A-Za-z0-9]+$
  61. */
  62. public static final String STR_ENG_NUM="^[A-Za-z0-9]+";
  63. /**
  64. * 匹配由26个英文字母组成的字符串 ^[A-Za-z]+$
  65. */
  66. public static final String STR_ENG="^[A-Za-z]+$";
  67. /**
  68. * 过滤特殊字符串正则
  69. * regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";
  70. */
  71. public static final String STR_SPECIAL="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";
  72. /***
  73. * 日期正则 支持:
  74. * YYYY-MM-DD
  75. * YYYY/MM/DD
  76. * YYYY_MM_DD
  77. * YYYYMMDD
  78. * YYYY.MM.DD的形式
  79. */
  80. public static final String DATE_ALL="((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(10|12|0?[13578])([-\\/\\._]?)(3[01]|[12][0-9]|0?[1-9])$)" +
  81. "|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(11|0?[469])([-\\/\\._]?)(30|[12][0-9]|0?[1-9])$)" +
  82. "|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(0?2)([-\\/\\._]?)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([3579][26]00)" +
  83. "([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)" +
  84. "|(^([1][89][0][48])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][0][48])([-\\/\\._]?)" +
  85. "(0?2)([-\\/\\._]?)(29)$)" +
  86. "|(^([1][89][2468][048])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._]?)(0?2)" +
  87. "([-\\/\\._]?)(29)$)|(^([1][89][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|" +
  88. "(^([2-9][0-9][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$))";
  89. /***
  90. * 日期正则 支持:
  91. * YYYY-MM-DD
  92. */
  93. public static final String DATE_FORMAT1="(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)";
  94. /**
  95. * URL正则表达式
  96. * 匹配 http www ftp
  97. */
  98. public static final String URL = "^(http|www|ftp|)?(://)?(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*((:\\d+)?)(/(\\w+(-\\w+)*))*(\\.?(\\w)*)(\\?)?" +
  99. "(((\\w*%)*(\\w*\\?)*(\\w*:)*(\\w*\\+)*(\\w*\\.)*(\\w*&)*(\\w*-)*(\\w*=)*(\\w*%)*(\\w*\\?)*" +
  100. "(\\w*:)*(\\w*\\+)*(\\w*\\.)*" +
  101. "(\\w*&)*(\\w*-)*(\\w*=)*)*(\\w*)*)$";
  102. /**
  103. * 身份证正则表达式
  104. */
  105. public static final String IDCARD="((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})" +
  106. "(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}" +
  107. "[Xx0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))";
  108. /**
  109. * 机构代码
  110. */
  111. public static final String JIGOU_CODE = "^[A-Z0-9]{8}-[A-Z0-9]$";
  112. /**
  113. * 匹配数字组成的字符串 ^[0-9]+$
  114. */
  115. public static final String STR_NUM = "^[0-9]+$";
  116. ------------------验证方法
  117. /**
  118. * 判断字段是否为空 符合返回ture
  119. * @param str
  120. * @return boolean
  121. */
  122. public static synchronized boolean StrisNull(String str) {
  123. return null == str || str.trim().length() <= 0 ? true : false ;
  124. }
  125. /**
  126. * 判断字段是非空 符合返回ture
  127. * @param str
  128. * @return boolean
  129. */
  130. public static boolean StrNotNull(String str) {
  131. return !StrisNull(str) ;
  132. }
  133. /**
  134. * 字符串null转空
  135. * @param str
  136. * @return boolean
  137. */
  138. public static String nulltoStr(String str) {
  139. return StrisNull(str)?"":str;
  140. }
  141. /**
  142. * 字符串null赋值默认值
  143. * @param str 目标字符串
  144. * @param defaut 默认值
  145. * @return String
  146. */
  147. public static String nulltoStr(String str,String defaut) {
  148. return StrisNull(str)?defaut:str;
  149. }
  150. /**
  151. * 判断字段是否为Email 符合返回ture
  152. * @param str
  153. * @return boolean
  154. */
  155. public static boolean isEmail(String str) {
  156. return Regular(str,EMAIL);
  157. }
  158. /**
  159. * 判断是否为电话号码 符合返回ture
  160. * @param str
  161. * @return boolean
  162. */
  163. public static boolean isPhone(String str) {
  164. return Regular(str,PHONE);
  165. }
  166. /**
  167. * 判断是否为手机号码 符合返回ture
  168. * @param str
  169. * @return boolean
  170. */
  171. public static boolean isMobile(String str) {
  172. return Regular(str,MOBILE);
  173. }
  174. /**
  175. * 判断是否为Url 符合返回ture
  176. * @param str
  177. * @return boolean
  178. */
  179. public static boolean isUrl(String str) {
  180. return Regular(str,URL);
  181. }
  182. /**
  183. * 判断字段是否为数字 正负整数 正负浮点数 符合返回ture
  184. * @param str
  185. * @return boolean
  186. */
  187. public static boolean isNumber(String str) {
  188. return Regular(str,DOUBLE);
  189. }
  190. /**
  191. * 判断字段是否为INTEGER 符合返回ture
  192. * @param str
  193. * @return boolean
  194. */
  195. public static boolean isInteger(String str) {
  196. return Regular(str,INTEGER);
  197. }
  198. /**
  199. * 判断字段是否为正整数正则表达式 >=0 符合返回ture
  200. * @param str
  201. * @return boolean
  202. */
  203. public static boolean isINTEGER_NEGATIVE(String str) {
  204. return Regular(str,INTEGER_NEGATIVE);
  205. }
  206. /**
  207. * 判断字段是否为负整数正则表达式 <=0 符合返回ture
  208. * @param str
  209. * @return boolean
  210. */
  211. public static boolean isINTEGER_POSITIVE(String str) {
  212. return Regular(str,INTEGER_POSITIVE);
  213. }
  214. /**
  215. * 判断字段是否为DOUBLE 符合返回ture
  216. * @param str
  217. * @return boolean
  218. */
  219. public static boolean isDouble(String str) {
  220. return Regular(str,DOUBLE);
  221. }
  222. /**
  223. * 判断字段是否为正浮点数正则表达式 >=0 符合返回ture
  224. * @param str
  225. * @return boolean
  226. */
  227. public static boolean isDOUBLE_NEGATIVE(String str) {
  228. return Regular(str,DOUBLE_NEGATIVE);
  229. }
  230. /**
  231. * 判断字段是否为负浮点数正则表达式 <=0 符合返回ture
  232. * @param str
  233. * @return boolean
  234. */
  235. public static boolean isDOUBLE_POSITIVE(String str) {
  236. return Regular(str,DOUBLE_POSITIVE);
  237. }
  238. /**
  239. * 判断字段是否为日期 符合返回ture
  240. * @param str
  241. * @return boolean
  242. */
  243. public static boolean isDate(String str) {
  244. return Regular(str,DATE_ALL);
  245. }
  246. /**
  247. * 验证2010-12-10
  248. * @param str
  249. * @return
  250. */
  251. public static boolean isDate1(String str) {
  252. return Regular(str,DATE_FORMAT1);
  253. }
  254. /**
  255. * 判断字段是否为年龄 符合返回ture
  256. * @param str
  257. * @return boolean
  258. */
  259. public static boolean isAge(String str) {
  260. return Regular(str,AGE) ;
  261. }
  262. /**
  263. * 判断字段是否超长
  264. * 字串为空返回fasle, 超过长度{leng}返回ture 反之返回false
  265. * @param str
  266. * @param leng
  267. * @return boolean
  268. */
  269. public static boolean isLengOut(String str,int leng) {
  270. return StrisNull(str)?false:str.trim().length() > leng ;
  271. }
  272. /**
  273. * 判断字段是否为身份证 符合返回ture
  274. * @param str
  275. * @return boolean
  276. */
  277. public static boolean isIdCard(String str) {
  278. if(StrisNull(str)) return false ;
  279. if(str.trim().length() == 15 || str.trim().length() == 18) {
  280. return Regular(str,IDCARD);
  281. }else {
  282. return false ;
  283. }
  284. }
  285. /**
  286. * 判断字段是否为邮编 符合返回ture
  287. * @param str
  288. * @return boolean
  289. */
  290. public static boolean isCode(String str) {
  291. return Regular(str,CODE) ;
  292. }
  293. /**
  294. * 判断字符串是不是全部是英文字母
  295. * @param str
  296. * @return boolean
  297. */
  298. public static boolean isEnglish(String str) {
  299. return Regular(str,STR_ENG) ;
  300. }
  301. /**
  302. * 判断字符串是不是全部是英文字母+数字
  303. * @param str
  304. * @return boolean
  305. */
  306. public static boolean isENG_NUM(String str) {
  307. return Regular(str,STR_ENG_NUM) ;
  308. }
  309. /**
  310. * 判断字符串是不是全部是英文字母+数字+下划线
  311. * @param str
  312. * @return boolean
  313. */
  314. public static boolean isENG_NUM_(String str) {
  315. return Regular(str,STR_ENG_NUM_) ;
  316. }
  317. /**
  318. * 过滤特殊字符串 返回过滤后的字符串
  319. * @param str
  320. * @return boolean
  321. */
  322. public static String filterStr(String str) {
  323. Pattern p = Pattern.compile(STR_SPECIAL);
  324. Matcher m = p.matcher(str);
  325. return m.replaceAll("").trim();
  326. }
  327. /**
  328. * 校验机构代码格式
  329. * @return
  330. */
  331. public static boolean isJigouCode(String str){
  332. return Regular(str,JIGOU_CODE) ;
  333. }
  334. /**
  335. * 判断字符串是不是数字组成
  336. * @param str
  337. * @return boolean
  338. */
  339. public static boolean isSTR_NUM(String str) {
  340. return Regular(str,STR_NUM) ;
  341. }
  342. /**
  343. * 匹配是否符合正则表达式pattern 匹配返回true
  344. * @param str 匹配的字符串
  345. * @param pattern 匹配模式
  346. * @return boolean
  347. */
  348. private static boolean Regular(String str,String pattern){
  349. if(null == str || str.trim().length()<=0)
  350. return false;
  351. Pattern p = Pattern.compile(pattern);
  352. Matcher m = p.matcher(str);
  353. return m.matches();
  354. }
  355. }

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/51365627

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。