正则工具类以及FinalClass

package com.jadyer.server.util;

import java.util.regex.Pattern;

/**
 * 正则工具类
 * @see final class可以提高执行速度,原因如下
 * @see 1)不涉及继承和覆盖
 * @see 2)其地址引用和装载在编译时完成,而不是在运行期间由JVM进行复杂的装载,因而简单并有效
 * @see 3)运行时不要求JVM执行因覆盖而产生的动态地址引用而花费时间和空间
 * @see 4)与继承链上的一般对象相比,垃圾回收器在收回final对象所占据的地址空间时也相对简单快捷
 * @version v1.0
 * @history v1.0-->新建此工具类
 * @create Dec 16, 2013 1:04:09 PM
 * @author 玄玉<http://blog.csdn.net/jadyer>
 */
public final class RegexUtil {
	private RegexUtil(){}

	/**
	 * 验证Email
	 */
	public static boolean isEmail(String email){
		return Pattern.matches("\\[email protected]\\w+\\.[a-z]+(\\.[a-z]+)?", email);
	}

	/**
	 * 验证身份证号
	 * @see 身份证号码为15位或18位,且首位不能为0,尾位可以是字母或数字
	 */
	public static boolean isIdCard(String idCard){
		return Pattern.matches("[1-9]\\d{13,16}[a-zA-Z0-9]{1}", idCard);
	}

	/**
	 * 验证手机号码
	 * @see 移动的号段:134,135,136,137,138,139,147,150,151,152,157,158,159,182,187,188
	 * @see 联通的号段:130,131,132,145,155,156,185,186
	 * @see 电信的号段:133,153,180,189
	 * @param mobile 移动联通电信三大运营商的号码段,支持国际格式,如+86135xxxxxxxx(中国内地),+00852137xxxxxxxx(中国香港)
	 */
	public static boolean isMobile(String mobile){
		//return Pattern.matches("^(13[0,1,2]|145|15[5,6]|18[5,6])\\d{8}$", mobile);
		return Pattern.matches("(\\+\\d+)?1[3458]\\d{9}$", mobile);
	}

	/**
	 * 验证固定电话号码
	 * @see 国家(地区)代码:标识电话号码的国家(地区)的标准国家(地区)代码,它包含从0到9的一位或多位数字
	 * @see 区号(城市代码):这可能包含一个或多个从0到9的数字,地区或城市代码放在圆括号标明对不使用地区或城市代码的国家(地区)则省略该组件
	 * @see 电话号码:包含从0到9的七位或八位数字
	 * @param phone 座机号,格式为:国家(地区)代码+区号(城市代码)+电话号码,如:+8602085588447
	 */
	public static boolean isPhone(String phone){
		return Pattern.matches("(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$", phone);
	}

	/**
	 * 验证中文
	 */
	public static boolean isChinese(String chinese){
		return Pattern.matches("^[\u4E00-\u9FA5]+$", chinese);
	}

	/**
	 * 验证中国邮政编码
	 */
	public static boolean isPostCode(String postCode){
		return Pattern.matches("[1-9]\\d{5}", postCode);
	}

	/**
	 * 验证IP地址
	 * @see 这里并未匹配IP段的大小
	 * @param ipAddress IPv4标准地址
	 */
	public static boolean isIPAddress(String ipAddress){
		return Pattern.matches("[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))", ipAddress);
	}

	/**
	 * 验证URL地址
	 */
	public static boolean isURL(String url){
		return Pattern.matches("(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?", url);
	}
}

正则工具类以及FinalClass,布布扣,bubuko.com

时间: 2024-09-30 18:41:29

正则工具类以及FinalClass的相关文章

android经常使用正则工具类

此类提供日常开发中经常使用的正则验证函数.比方:邮箱.手机号.电话号码.身份证号码.日期.数字.小数.URL.IP地址等.使用Pattern对象的matches方法进行整个字符匹配,调用该方法相当于: Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); return m.matches(); 每一个正则可能还有待优化的地方,您如有更好的方式实现某一个功能的验证,欢迎提出来大家一起讨论. 以下是工具类的完整代码: 源代

Android常用正则工具类

此类提供日常开发中常用的正则验证函数,比如:邮箱.手机号.电话号码.身份证号码.日期.数字.小数.URL.IP地址等.使用Pattern对象的matches方法进行整个字符匹配,调用该方法相当于:        Pattern p = Pattern.compile(regex);        Matcher m = p.matcher(input);        return m.matches();每个正则可能还有待优化的地方,您如有更好的方式实现某一个功能的验证,欢迎提出来大家一起讨论

C#常用的正则工具类写法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace ConsoleApplication1 { /// <summary> /// 字符串正则匹配帮助类 /// </summary> public static cla

Java学习-049-正则工具类

自去年九月份决定再次入学和职业资格进阶,开始备战二者考试至今,以及当下进行中的职称申请,犹如孤独的狼,不断前行在路上,而今凡凡总总的已历8月... 不感慨了,如下为一园友需要的正则工具类,直接上码: 1 public class RegUtils { 2 private static Logger logger = Logger.getLogger(RegUtils.class.getName()); 3 private static String msg = ""; 4 privat

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容

[php]代码库 view sourceprint? <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 200

[工具类]文件或文件夹xx已存在,则重命名为xx(n)(2)

写在前面 最近一直在弄文件传输组件,其中一个功能就是,在接收端接收文件时,如果文件已经存在了,则对其进行文件名+索引的方式进行自动重命名,之前也写个类似的工具类,总感觉代码太冗余,每回头想想,总觉得心里有疙瘩,下班的时候在地铁上,又想了想,感觉是我把问题想复杂了,遂将今天的思路整理一下,写了一个辅助类,记录在此. 上篇文章 [工具类]文件或文件夹xx已存在,则重命名为xx(n) ReNameHelper代码 1 using System; 2 using System.Collections.G

实用篇:说说我在JavaScript项目中使用的工具类

在JavaScript的开发中,我们都会写一些工具类来帮我们简化一些业务操作的逻辑,一下就貼几个我在项目开发过程中常用的工具类.表达能力有限,各位看官还是看源码吧. 一.日期处理工具类. /** * 日期处理工具类 * @Authors: jackyWHJ * @date 2013-10-18 * */ var DateUtils = { /** * 得到日期在一年当中的周数 */ getISOYearWeek: function(date) { var commericalyear = thi

我的QT5学习之路(三)——模板库、工具类和控件(中)

一.前言 前面我们了解了关于Qt字符串的一些简单操作,容器类的分类和各自的主要特点以及用途,这一次我们了解一些常见的工具类和常见的控件. 二.QByteArry和QVariant 2.1 QByteArry 关于QByteArry,我们在上篇中曾经看到过.QByteArry和QString的功能和API基本类似,具有很多相似的函数.不同的地方在于QByteArry能够存储原生的二进制数据和8位编码的文本数据,那么何为原生的二进制数据和8为编码的文本数据呢?稍微了解计算机原理的童鞋可能都知道,计算