基礎(摘)
\\ 反斜杠
\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;

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

import com.Gavin.tools.util.WriteLog;

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

public class CheckFormat
{

//驗證郵箱

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

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

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

//驗證英文、數字、下劃線的組合 5-16位

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

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

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

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

/** *//**//*
* 大于1 浮點數、整數
* 01.99 false
* 0.99 false
* 1. false
* 1.0 true
* 1.00 true
*
*/

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

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

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

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

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

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

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

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

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


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