基础(摘)
  
\\  反斜杠
\t  间隔 ('\u0009')
\n  换行 ('\u000A')
\r  回车 ('\u000D')
\d  数字 等价于[0-9]
\D  非数字 等价于[^0-9]
\s  空白符号 [\t\n\x0B\f\r]
\S  非空白符号[^\t\n\x0B\f\r]
\w  单独字符[a-zA-Z_0-9]
\W  非单独字符 [^a-zA-Z_0-9]
\f  换页符
\e  Escape
\b  一个单词的边界
\B  一个非单词的边界
\G  前一个匹配的结束
/***************************************************/
^为限制开头
^java  条件限制为以Java为开头字符
/***************************************************/
$为限制结尾
java$  条件限制为以java为结尾字符
/***************************************************/
.条件限制除\n以外任意一个单独字符
java..  条件限制为java后除换行外任意两个字符
/***************************************************/
加入特定限制条件「[]」
[a-z]  条件限制在小写a to z范围中一个字符
[A-Z]  条件限制在大写A to Z范围中一个字符
[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符
[0-9]  条件限制在小写0 to 9范围中一个字符
[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符
[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)
/***************************************************/
[]中加入^后加再次限制条件[^]
[^a-z]  条件限制在非小写a to z范围中一个字符
[^A-Z]  条件限制在非大写A to Z范围中一个字符
[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符
[^0-9]  条件限制在非小写0 to 9范围中一个字符
[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)
/***************************************************/
在限制条件为特定字符出现0次以上时,可以使用「*」
J*  0个以上J
.*  0个以上任意字符
J.*D  J与D之间0个以上任意字符
/***************************************************/
在限制条件为特定字符出现1次以上时,可以使用「+」
J+  1个以上J
.+  1个以上任意字符
J.+D  J与D之间1个以上任意字符
/***************************************************/
在限制条件为特定字符出现有0或1次以上时,可以使用「?」
JA?  J或者JA出现
/***************************************************/
限制为连续出现指定次数字符「{a}」
J{2}  JJ
J{3}  JJJ
/***************************************************/
文字a个以上,并且「{a,}」
J{3,}  JJJ,JJJJ,JJJJJ,???(3次以上J并存)
文字个以上,b个以下「{a,b}」
J{3,5}  JJJ或JJJJ或JJJJJ
/***************************************************/
两者取一「|」
J|A  J或A
Java|Hello Java或Hello
 
「()」中规定一个组合类型
比如,我查询<a href=\"index.html\">index</a>中<a href></a>间的数据,可写作<a.*href=\".*\">(.+?)</a>
在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:
Pattern Pattern.compile(String regex, int flag)
flag的取值范围如下:
Pattern.CANON_EQ     当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a\u030A"会匹配"?"。默认情况下,不考虑"规 范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE(?i)     默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹 配,只要将UNICODE_CASE与这个标志合起来就行了。
Pattern.COMMENTS(?x)     在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。
Pattern.DOTALL(?s)     在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式'.'不匹配行的结束符。
Pattern.MULTILINE
(?m)     在这种模式下,'^'和'$'分别匹配一行的开始和结束。此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。
Pattern.UNICODE_CASE
(?u)     在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。
Pattern.UNIX_LINES(?d)     在这个模式下,只有'\n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配
 
 package com.yixun.wap;
package com.yixun.wap;

 import java.util.regex.Matcher;
import java.util.regex.Matcher;
 import java.util.regex.Pattern;
import java.util.regex.Pattern;

 import com.Gavin.tools.util.WriteLog;
import com.Gavin.tools.util.WriteLog;

 /** *//** *//** *//**
/** *//** *//** *//**
 *
 * 
 * @descripte check format
 * @descripte check format
 * @author Gavin.lee
 * @author Gavin.lee
 * @date 2009-5-20下午06:37:49
 * @date 2009-5-20下午06:37:49
 * @version 1.0
 * @version 1.0
 *
 *
 */
 */

 public class CheckFormat
public class CheckFormat  {
{

 
    
 //验证邮箱
//验证邮箱
 
    

 public static boolean checkMail(String str)
    public static boolean checkMail(String str)  {
{
 Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
        Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
 Matcher matcher = pattern.matcher(str);
        Matcher matcher = pattern.matcher(str);
 return matcher.matches();
        return matcher.matches();
 }
    }
 //验证中文,不能验证中文标点
//验证中文,不能验证中文标点

 public static boolean checkChinese(String str)
    public static boolean checkChinese(String str)  {
{
 Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]+$");
        Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]+$"); 
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str); 
 return match.matches();
        return match.matches();
 }
    }
 //双字节(包括中文)
//双字节(包括中文)

 public static boolean checkDoubleByte(String str)
    public static boolean checkDoubleByte(String str)  {
{
 Pattern pattern = Pattern.compile("[^\\x00-\\xff]+$");
        Pattern pattern = Pattern.compile("[^\\x00-\\xff]+$");
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str); 
 return match.matches();
        return match.matches();
 }
    }    

 //验证英文、数字、下划线的组合  5-16位
//验证英文、数字、下划线的组合  5-16位

 public static boolean checkENU(String str)
    public static boolean checkENU(String str)  {
{
 Pattern pattern = Pattern.compile("[a-zA-Z0-9_]{4,15}$+$");  //^\w+$
        Pattern pattern = Pattern.compile("[a-zA-Z0-9_]{4,15}$+$");  //^\w+$
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 //验证英文、数字的组合
//验证英文、数字的组合

 public static boolean checkEAN(String str)
    public static boolean checkEAN(String str)  {
{
 Pattern pattern = Pattern.compile("[a-zA-Z0-9]+$");
        Pattern pattern = Pattern.compile("[a-zA-Z0-9]+$");
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 //只英文
//只英文

 public static boolean checkEnglish(String str)
    public static boolean checkEnglish(String str)  {
{
 Pattern pattern = Pattern.compile("[a-zA-Z]+$");
        Pattern pattern = Pattern.compile("[a-zA-Z]+$");
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 //只数字
//只数字  

 public static boolean checkNumber(String str)
    public static boolean checkNumber(String str)  {
{
 Pattern pattern = Pattern.compile("[0-9]+$");        //[^0-9]   非数字
        Pattern pattern = Pattern.compile("[0-9]+$");        //[^0-9]   非数字
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }

 /** *//**//*
/** *//**//*
 * 大于1 浮点数、整数
 * 大于1 浮点数、整数
 * 01.99    false
 * 01.99    false
 * 0.99        false
 * 0.99        false
 * 1.        false
 * 1.        false
 * 1.0        true
 * 1.0        true
 * 1.00        true
 * 1.00        true
 *
 * 
 */
 */

 public static boolean checkFloat(String str)
    public static boolean checkFloat(String str)  {
{
 Pattern pattern = Pattern.compile("[^0][0-9]*.{0,1}[0-9]{0,2}+$");        //[^0-9]   非数字
        Pattern pattern = Pattern.compile("[^0][0-9]*.{0,1}[0-9]{0,2}+$");        //[^0-9]   非数字
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);

 if(str.indexOf(".") == 0)
        if(str.indexOf(".") == 0)  {
{
 return false;
            return false;

 } else if (str.indexOf(".") == (str.length()-1))
        } else if (str.indexOf(".") == (str.length()-1))  {
{
 return false;
            return false;
 }
        }
 
        
 return match.matches();
        return match.matches();
 }
    }
 //身份证验证   \d{15}|\d{18}
//身份证验证   \d{15}|\d{18}

 public static boolean checkIdentityCard(String str)
    public static boolean checkIdentityCard(String str)  {
{
 Pattern pattern = Pattern.compile("\\d{15}|\\d{18}+$");
        Pattern pattern = Pattern.compile("\\d{15}|\\d{18}+$");        
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }

 //IP地址    \d+\.\d+\.\d+\.\d+
//IP地址    \d+\.\d+\.\d+\.\d+

 public static boolean checkIP(String str)
    public static boolean checkIP(String str)  {
{
 Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d++$");
        Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d++$");        
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 
    
 //国内固话    \d{3}-\d{8}|\d{4}-\d{7}
//国内固话    \d{3}-\d{8}|\d{4}-\d{7}

 public static boolean checkPhoneNum(String str)
    public static boolean checkPhoneNum(String str)  {
{
 Pattern pattern = Pattern.compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}+$");
        Pattern pattern = Pattern.compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}+$");
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 //QQ验证 10000开始    [1-9][0-9]{4,}
//QQ验证 10000开始    [1-9][0-9]{4,}

 public static boolean checkQQ(String str)
    public static boolean checkQQ(String str)  {
{
 Pattern pattern = Pattern.compile("[1-9][0-9]{4,}+$");
        Pattern pattern = Pattern.compile("[1-9][0-9]{4,}+$");        
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }
 //URL判定  http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
//URL判定  http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?

 public static boolean checkURL(String str)
    public static boolean checkURL(String str)  {
{        
 Pattern pattern = Pattern.compile("http://([\\w-]+\\.)+[\\w-]+([\\w-.?%&=]*)?+$");
        Pattern pattern = Pattern.compile("http://([\\w-]+\\.)+[\\w-]+([\\w-.?%&=]*)?+$");        
 Matcher match = pattern.matcher(str);
        Matcher match = pattern.matcher(str);
 return match.matches();
        return match.matches();
 }
    }


 public static void main(String args[])
    public static void main(String args[])  {
{
 //        System.out.println(CheckFormat.checkMail("doingjava@126.com"));
//        System.out.println(CheckFormat.checkMail("doingjava@126.com"));
 //        System.out.println(CheckFormat.checkChinese("易讯天空"));
//        System.out.println(CheckFormat.checkChinese("易讯天空"));
 //        System.out.println(CheckFormat.checkDoubleByte("易讯天空"));
//        System.out.println(CheckFormat.checkDoubleByte("易讯天空")); 
 //        System.out.println(CheckFormat.checkENU("doing_java126"));
//        System.out.println(CheckFormat.checkENU("doing_java126")); 
 //        System.out.println(CheckFormat.checkEAN("500wan"));
//        System.out.println(CheckFormat.checkEAN("500wan"));
 //        System.out.println(CheckFormat.checkEnglish("wan"));
//        System.out.println(CheckFormat.checkEnglish("wan"));
 //        System.out.println(CheckFormat.checkNumber("500"));
//        System.out.println(CheckFormat.checkNumber("500"));
 //        System.out.println(CheckFormat.checkIdentityCard("342401198606038578"));
//        System.out.println(CheckFormat.checkIdentityCard("342401198606038578"));
 //        System.out.println(CheckFormat.checkIP("192.168.9.17"));
//        System.out.println(CheckFormat.checkIP("192.168.9.17"));
 //        System.out.println(CheckFormat.checkPhoneNum("0564-2649344"));
//        System.out.println(CheckFormat.checkPhoneNum("0564-2649344"));
 //        System.out.println(CheckFormat.checkQQ("496508302"));
//        System.out.println(CheckFormat.checkQQ("496508302"));
 //        System.out.println(CheckFormat.checkURL("http://wap.500wan.com.cn?id=1&name=gavin"));
//        System.out.println(CheckFormat.checkURL("http://wap.500wan.com.cn?id=1&name=gavin"));
 //        WriteLog.writeLog("CheckFormat", "context");
//        WriteLog.writeLog("CheckFormat", "context");
 System.out.println(CheckFormat.checkFloat("1.00"));
        System.out.println(CheckFormat.checkFloat("1.00"));
 //        System.out.println((".99").indexOf(".") == 0);
//        System.out.println((".99").indexOf(".") == 0);
 }
    }
 }
}