基礎(chǔ)(摘)
\\ 反斜杠
\t 間隔 ('\u0009')
\n 換行 ('\u000A')
\r 回車 ('\u000D')
\d 數(shù)字 等價(jià)于[0-9]
\D 非數(shù)字 等價(jià)于[^0-9]
\s 空白符號(hào) [\t\n\x0B\f\r]
\S 非空白符號(hào)[^\t\n\x0B\f\r]
\w 單獨(dú)字符[a-zA-Z_0-9]
\W 非單獨(dú)字符 [^a-zA-Z_0-9]
\f 換頁(yè)符
\e Escape
\b 一個(gè)單詞的邊界
\B 一個(gè)非單詞的邊界
\G 前一個(gè)匹配的結(jié)束
/***************************************************/
^為限制開頭
^java 條件限制為以Java為開頭字符
/***************************************************/
$為限制結(jié)尾
java$ 條件限制為以java為結(jié)尾字符
/***************************************************/
.條件限制除\n以外任意一個(gè)單獨(dú)字符
java.. 條件限制為java后除換行外任意兩個(gè)字符
/***************************************************/
加入特定限制條件「[]」
[a-z] 條件限制在小寫a to z范圍中一個(gè)字符
[A-Z] 條件限制在大寫A to Z范圍中一個(gè)字符
[a-zA-Z] 條件限制在小寫a to z或大寫A to Z范圍中一個(gè)字符
[0-9] 條件限制在小寫0 to 9范圍中一個(gè)字符
[0-9a-z] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符
[0-9[a-z]] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符(交集)
/***************************************************/
[]中加入^后加再次限制條件[^]
[^a-z] 條件限制在非小寫a to z范圍中一個(gè)字符
[^A-Z] 條件限制在非大寫A to Z范圍中一個(gè)字符
[^a-zA-Z] 條件限制在非小寫a to z或大寫A to Z范圍中一個(gè)字符
[^0-9] 條件限制在非小寫0 to 9范圍中一個(gè)字符
[^0-9a-z] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符
[^0-9[a-z]] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符(交集)
/***************************************************/
在限制條件為特定字符出現(xiàn)0次以上時(shí),可以使用「*」
J* 0個(gè)以上J
.* 0個(gè)以上任意字符
J.*D J與D之間0個(gè)以上任意字符
/***************************************************/
在限制條件為特定字符出現(xiàn)1次以上時(shí),可以使用「+」
J+ 1個(gè)以上J
.+ 1個(gè)以上任意字符
J.+D J與D之間1個(gè)以上任意字符
/***************************************************/
在限制條件為特定字符出現(xiàn)有0或1次以上時(shí),可以使用「?」
JA? J或者JA出現(xiàn)
/***************************************************/
限制為連續(xù)出現(xiàn)指定次數(shù)字符「{a}」
J{2} JJ
J{3} JJJ
/***************************************************/
文字a個(gè)以上,并且「{a,}」
J{3,} JJJ,JJJJ,JJJJJ,???(3次以上J并存)
文字個(gè)以上,b個(gè)以下「{a,b}」
J{3,5} JJJ或JJJJ或JJJJJ
/***************************************************/
兩者取一「|」
J|A J或A
Java|Hello Java或Hello
「()」中規(guī)定一個(gè)組合類型
比如,我查詢<a href=\"index.html\">index</a>中<a href></a>間的數(shù)據(jù),可寫作<a.*href=\".*\">(.+?)</a>
在使用Pattern.compile函數(shù)時(shí),可以加入控制正則表達(dá)式的匹配行為的參數(shù):
Pattern Pattern.compile(String regex, int flag)
flag的取值范圍如下:
Pattern.CANON_EQ 當(dāng)且僅當(dāng)兩個(gè)字符的"正規(guī)分解(canonical decomposition)"都完全相同的情況下,才認(rèn)定匹配。比如用了這個(gè)標(biāo)志之后,表達(dá)式"a\u030A"會(huì)匹配"?"。默認(rèn)情況下,不考慮"規(guī) 范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE(?i) 默認(rèn)情況下,大小寫不明感的匹配只適用于US-ASCII字符集。這個(gè)標(biāo)志能讓表達(dá)式忽略大小寫進(jìn)行匹配。要想對(duì)Unicode字符進(jìn)行大小不明感的匹 配,只要將UNICODE_CASE與這個(gè)標(biāo)志合起來(lái)就行了。
Pattern.COMMENTS(?x) 在這種模式下,匹配時(shí)會(huì)忽略(正則表達(dá)式里的)空格字符(譯者注:不是指表達(dá)式里的"\\s",而是指表達(dá)式里的空格,tab,回車之類)。注釋從#開始,一直到這行結(jié)束??梢酝ㄟ^(guò)嵌入式的標(biāo)志來(lái)啟用Unix行模式。
Pattern.DOTALL(?s) 在這種模式下,表達(dá)式'.'可以匹配任意字符,包括表示一行的結(jié)束符。默認(rèn)情況下,表達(dá)式'.'不匹配行的結(jié)束符。
Pattern.MULTILINE
(?m) 在這種模式下,'^'和'$'分別匹配一行的開始和結(jié)束。此外,'^'仍然匹配字符串的開始,'$'也匹配字符串的結(jié)束。默認(rèn)情況下,這兩個(gè)表達(dá)式僅僅匹配字符串的開始和結(jié)束。
Pattern.UNICODE_CASE
(?u) 在這個(gè)模式下,如果你還啟用了CASE_INSENSITIVE標(biāo)志,那么它會(huì)對(duì)Unicode字符進(jìn)行大小寫不明感的匹配。默認(rèn)情況下,大小寫不敏感的匹配只適用于US-ASCII字符集。
Pattern.UNIX_LINES(?d) 在這個(gè)模式下,只有'\n'才被認(rèn)作一行的中止,并且與'.','^',以及'$'進(jì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
{

//驗(yàn)證郵箱

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

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

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

//驗(yàn)證英文、數(shù)字、下劃線的組合 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();
}
//驗(yàn)證英文、數(shù)字的組合

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();
}
//只數(shù)字

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

/** *//**//*
* 大于1 浮點(diǎn)數(shù)、整數(shù)
* 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] 非數(shù)字
Matcher match = pattern.matcher(str);

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

} else if (str.indexOf(".") == (str.length()-1))
{
return false;
}
return match.matches();
}
//身份證驗(yàn)證 \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();
}
//國(guó)內(nèi)固話 \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驗(yàn)證 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);
}
}