元字符 | 含義 |
---|---|
. | 表示任意一個字符 |
\s | 空格字符(空格鍵,tab,換行,換頁,回車) |
\S | 非空格字符([^\s]) |
\d | 一個數字,(相當於[0-9]) |
\D | 一個非數字的字符,(相當於[^0-9]) |
\w | 一個單詞字符(word character) (相當於[a-zA-Z_0-9]) |
\W | 一個非單詞的字符,[^\w] |
^ | 一行的開始 |
$ | 一行的結尾 |
\b | 一個單詞的邊界 |
\B | 一個非單詞的邊界 |
[] | 匹配方括號內的一個字符 |
表示次數的元字符
元字符 | 含義 |
---|---|
* | 重複零次或更多次 |
+ | 重複一次或更多次 |
? | 重複零次或一次 |
{n} | 重複n次 |
{n,} | 重複n或更多次數 |
{n,m} | 重複n到m次 |
正則表達式,最重要的就是匹配規則的書寫,其實正則表達式,並不難,只要對其組成的元字符有一定的瞭解,就比較簡單了
正則表達式,是驗證字符串的神器,學會了將很大的縮短字符串處理所需要的事件和代碼量
正則表達式的書寫時由元字符組成的
上面的表格就是部分常用元字符,及其含義。
我們就用常見的判斷手機號碼的正則表達式來看看:
public static boolean checkPhone(String phone) {
//其中compile的參數就是正則表達式的所要執行的匹配的規則
//前面小括號內別看有那麼多東西,其實所匹配的數字只有3個
// | 符號的意思就是或即從其中尋找能匹配上的字符 我們來減少點說
//(13[0-9]|15[0-9]|153)
//比如 字符串 13[0-9] 這個字符串所匹配的是一個長度爲3的字符 前兩位必須是13 最後一位必須是0-9中的一個
//15[0-9]和上面的規則時一樣的 而153就簡單了 153 表示字符必須只能時153不能時其他的
//(13[0-9]|15[0-9]|153) 和起來就表示 一個字符串必須滿足3個規則中的一個才時true否則就是false
//繼續來看下面的規則
// 也就是說一個字符串的前三位必須滿足下面8個規則中的一個
//後面的\\d{8}表示 \\d==\d 只是因爲java中轉義字符的原因所以纔要多加一個
//上面的表格中已經寫了 \d表示的時數字
//{8} 表示的是循環匹配8次
//總的 前面的3位數的匹配時驗證 對應的電話號碼段
//後面的8位必須是數字 這樣加起來就對8+3=11 爲電話號碼的長度
Pattern pattern = Pattern
.compile("^(13[0-9]|15[0-9]|153|15[6-9]|180|18[23]|18[5-9]|17[37])\\d{8}$");
Matcher matcher = pattern.matcher(phone);
if (matcher.matches()) {
return true;
}
return false;
}
也可以用一下這種方式直接匹配正則表達式,返回值時boolean
new String().matches("^(13[0-9]|15[0-9]|153|15[6-9]|180|18[23]|18[5-9]|17[37])\\d{8}$");
當然我說的還不夠詳細,如果想看更詳細的,請看下面鏈接:
http://baike.baidu.com/link?url=wSJQPNvPjvO8wtR-tJWI21FBizUGb8GO7YJwvl603MyJ17B6qif0jNaKtLxXSOKUDHd75UHE-KeE3S8mB3Vg6a
http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html
http://www.jikexueyuan.com/course/809.html
2017/04/20 16:11
js平臺正則判斷日期格式:
正確格式示例:2000/01/01 00:00:00
function checkDateTime(string) {
var check = /^(\d{4})[/][0-1]\d[/][0-3]\d\s[0-2]\d[:][0-5]\d[:][0-5]\d$/;
return string.match(check)
}
2017/08/17 09:36
匹配中文字符的正則表達式: [\u4e00-\u9fa5]