正則表達(dá)式概念:
正則表達(dá)式,又稱規(guī)則表達(dá)式。(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫(xiě)為 regex、regexp 或 RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。
正則表達(dá)式是對(duì)字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。正則表達(dá)式是一種文本模式,該模式描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。
String中的match()方法
String.matches() 這個(gè)方法主要是返回是否匹配指定的字符串,如果匹配則為 true,反之為 false。
這個(gè)方法的參數(shù)為正則表達(dá)式,關(guān)于正則表達(dá)式的用法如下:
- 檢查一個(gè)字符串中是否含有符合某個(gè)規(guī)則的子串,并且可以得到這個(gè)子串;
- 根據(jù)匹配規(guī)則對(duì)字符串進(jìn)行靈活的替換 / 檢索操作。
正則表達(dá)式規(guī)則
1.普通字符
字母、數(shù)字、漢字、下劃線、以及沒(méi)有特殊定義的標(biāo)點(diǎn)符號(hào),都是 “普通字符”。表達(dá)式中的普通字符,在匹配一個(gè)字符串的時(shí)候,匹配與之相同的一個(gè)字符。
字符 | 描述 |
---|---|
[abc] | 匹配[…]中所有的字符 |
[^abc] | 匹配除了[…]中所有的字符 |
[A-Z] | 匹配說(shuō)有區(qū)間A-Z的字符 |
[0-9] | 表示區(qū)間,匹配0-9的數(shù)字 |
. | 匹配除了換行符(\r、\n)之外的任何單個(gè)字符,相當(dāng)于[^\r\n] |
2.簡(jiǎn)單的轉(zhuǎn)義字符
3.能夠與 ‘多種字符’ 匹配的表達(dá)式
正則表達(dá)式中的一些表示方法,可以匹配 ‘多種字符’ 其中的任意一個(gè)字符。比如,表達(dá)式 “\d” 可以匹配任意一個(gè)數(shù)字。雖然可以匹配其中任意字符,但是只能是一個(gè),不是多個(gè)。
4.自定義能夠匹配 ‘多種字符’ 的表達(dá)式
使用方括號(hào) [ ] 包含一系列字符,能夠匹配其中任意一個(gè)字符。用 [^ ] 包含一系列字符,則能夠匹配其中字符之外的任意一個(gè)字符。同樣的道理,雖然可以匹配其中任意一個(gè),但是只能是一個(gè),不是多個(gè)。
5.修飾匹配次數(shù)的特殊符號(hào)
前面講到的表達(dá)式,無(wú)論是只能匹配一種字符的表達(dá)式,還是可以匹配多種字符其中任意一個(gè)的表達(dá)式,都只能匹配一次。如果使用表達(dá)式再加上修飾匹配次數(shù)的特殊符號(hào),那么不用重復(fù)書(shū)寫(xiě)表達(dá)式就可以重復(fù)匹配。
6.代表抽象意義的特殊符號(hào)
- 一些符號(hào)在表達(dá)式中代表抽象的特殊意義:
- 一些符號(hào)可以影響表達(dá)式內(nèi)部的子表達(dá)式之間的關(guān)系:
常用正則表達(dá)式
1、校驗(yàn)數(shù)字的表達(dá)式
數(shù)字:1*$
- n位的數(shù)字:^\d{n}$
- 至少n位的數(shù)字:^\d{n,}$
- m-n位的數(shù)字:^\d{m,n}$
- 零和非零開(kāi)頭的數(shù)字:^(0|[1-9][0-9]*)$
- 非零開(kāi)頭的最多帶兩位小數(shù)的數(shù)字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
- 帶1-2位小數(shù)的正數(shù)或負(fù)數(shù):^(-)?\d+(.\d{1,2})$
- 正數(shù)、負(fù)數(shù)、和小數(shù):^(-|+)?\d+(.\d+)?$
- 有兩位小數(shù)的正實(shí)數(shù):2+(.[0-9]{2})?$
- 有1~3位小數(shù)的正實(shí)數(shù):3+(.[0-9]{1,3})?$
- 非零的正整數(shù):4\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
- 非零的負(fù)整數(shù):^-[1-9][]0-9"$ 或 ^-[1-9]\d$
- 非負(fù)整數(shù):^\d+$ 或 5\d*|0$
- 非正整數(shù):^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
- 非負(fù)浮點(diǎn)數(shù):^\d+(.\d+)?$ 或 6\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
- 非正浮點(diǎn)數(shù):^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
- 正浮點(diǎn)數(shù):7\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
- 負(fù)浮點(diǎn)數(shù):^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
- 浮點(diǎn)數(shù):^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$
2、校驗(yàn)字符的表達(dá)式
- 漢字:8{0,}$
- 英文和數(shù)字:9+$ 或 10{4,40}$
- 長(zhǎng)度為3-20的所有字符:^.{3,20}$
- 由26個(gè)英文字母組成的字符串:11+$
- 由26個(gè)大寫(xiě)英文字母組成的字符串:12+$
- 由26個(gè)小寫(xiě)英文字母組成的字符串:13+$
- 由數(shù)字和26個(gè)英文字母組成的字符串:14+$
- 由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$
- 中文、英文、數(shù)字包括下劃線:15+$
- 中文、英文、數(shù)字但不包括下劃線等符號(hào):16+$ 或 17{2,20}$
- 可以輸入含有^%&',;=?KaTeX parse error: Expected group after '^' at position 8: \"等字符:[^?%&',;=?\x22]+
- 禁止輸入含有的字符:[^\x22]+
3、特殊需求表達(dá)式
- Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
- 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?
- InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
- 手機(jī)號(hào)碼:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
- 電話號(hào)碼(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$
- 國(guó)內(nèi)電話號(hào)碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
- 電話號(hào)碼正則表達(dá)式(支持手機(jī)號(hào)碼,3-4位區(qū)號(hào),7-8位直播號(hào)碼,1-4位分機(jī)號(hào)): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
- 身份證號(hào)(15位、18位數(shù)字),最后一位是校驗(yàn)位,可能為數(shù)字或字符X:(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x) ) 帳號(hào)是否合法 ( 字母開(kāi)頭,允許 5 ? 16 字節(jié),允許字母數(shù)字下劃線 ) : [ a ? z A ? Z ] [ a ? z A ? Z 0 ? 9 ] 4 , 15 ) 帳號(hào)是否合法(字母開(kāi)頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15} )帳號(hào)是否合法(字母開(kāi)頭,允許5?16字節(jié),允許字母數(shù)字下劃線):[a?zA?Z][a?zA?Z0?9]?4,15
- 密碼(以字母開(kāi)頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線):18\w{5,17}$
- 強(qiáng)密碼(必須包含大小寫(xiě)字母和數(shù)字的組合,不能使用特殊字符,長(zhǎng)度在 8-10 之間):^(?=.\d)(?=.[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
- 強(qiáng)密碼(必須包含大小寫(xiě)字母和數(shù)字的組合,可以使用特殊字符,長(zhǎng)度在8-10之間):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
- 日期格式:^\d{4}-\d{1,2}-\d{1,2}
- 一年的12個(gè)月(01~09和1~12):^(0?[1-9]|1[0-2])$
- 一個(gè)月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
- xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
- 中文字符的正則表達(dá)式:[\u4e00-\u9fa5]
- 雙字節(jié)字符:[^\x00-\xff] (包括漢字在內(nèi),可以用來(lái)計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1))
空白行的正則表達(dá)式:\n\s*\r (可以用來(lái)刪除空白行)
HTML標(biāo)記的正則表達(dá)式:<(\S*?)[^>]>.?|<.? /> ( 首尾空白字符的正則表達(dá)式:^\s|\s*KaTeX parse error: Undefined control sequence: \s at position 4: 或(^\?s?*)|(\s*) (可以用來(lái)刪除行首行尾的空白字符(包括空格、制表符、換頁(yè)符等等),非常有用的表達(dá)式) - 騰訊QQ號(hào):[1-9][0-9]{4,} (騰訊QQ號(hào)從10000開(kāi)始)
- 中國(guó)郵政編碼:[1-9]\d{5}(?!\d) (中國(guó)郵政編碼為6位數(shù)字)
- IP地址:((????:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
-
0-9 ??
-
0-9 ??
-
0-9 ??
-
1-9 ??
-
1-9 ??
-
1-9 ??
-
1-9 ??
-
\u4e00-\u9fa5 ??
-
A-Za-z0-9 ??
-
A-Za-z0-9 ??
-
A-Za-z ??
-
A-Z ??
-
a-z ??
-
A-Za-z0-9 ??
-
\u4E00-\u9FA5A-Za-z0-9_ ??
-
\u4E00-\u9FA5A-Za-z0-9 ??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-491264.html
-
\u4E00-\u9FA5A-Za-z0-9 ??
-
a-zA-Z ??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491264.html
到了這里,關(guān)于Java 之正則表達(dá)式語(yǔ)法及常用正則表達(dá)式匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!