JAVA 正則表達式語法?全

正則表達式語法

public final class Pattern
extends Object
implements Serializable

java中的調用順序
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaab");
boolean b = m.matches();

例如:
//座機電話格式:“區號+電話號”,“國家編號+區號+電話號”,“電話號”
String str = "86-234-99999999999"; //要驗證的電話號
String regex = "^(\\d{0,2}-)?(0\\d{1,4}-)?\\d{8,9}$"; //正則表達式的規則
p = Pattern.compile(regex); //編譯正則表達式
Matcher matcher = p.matcher(str);
boolean flag = matcher.matches(); //判斷字符串是否與正則表達式匹配
System.out.println(flag);

1.常?正則表達式

  ?個或多個漢字        ^[\u0391-\uFFE5]+$ 
  郵政編碼              ^[1-9]\d{5}$
  QQ號碼                ^[1-9]\d{4,10}$ 
  郵箱                  ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$ 
  ?戶名(字母開頭+ 數字/字母/下劃線)      ^[A-Za-z][A-Za-z1-9_-]+$
  ?機號碼            ^1[3|4|5|8][0-9]\d{8}$ 
  URL                 ^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 
  18位?份證號         ^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$

2、正則表達式語法

  元字符 

描述

  \           

將下?個字符標記符、或?個向后引?、或?個?進制轉義符。例如,“\n”匹配\n。“\n”匹配換?符。序列“\”匹配“\”?“(”則匹配“(”。即相當于多種編程語?中都有的“轉義字符”的概念。

  ^

匹配輸?字符串的開始位置。如果設置了RegExp對象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。

  $

匹配輸?字符串的結束位置。如果設置了RegExp對象的Multiline屬性,$也匹配“\n”或“\r”之前的位置。

  *

匹配前?的?表達式任意次。例如,zo能匹配“z”,“zo”以及“zoo”。等價于{0,}。

   +

匹配前?的?表達式?次或多次(?于等于1次)。例如,“zo+”能匹 配“zo”以及“zoo”,但不能匹配“z”。+等價于{1,}。

  ?

匹配前?的?表達式零次或?次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等價于{0,1}。

  {n}

n是?個?負整數。匹配確定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o。

  {n,}

n是?個?負整數。?少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等價于“o+”。“o{0,}”則等價于“o*”。

  {n,m}

m和n均為?負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”將匹配“fooooood”中的前三個o。“o{0,1}”等價于“o?”。請注意在逗號和兩個數之間不能有空格。

  ?

當該字符緊跟在任何?個其他限制符(*,+,?,{n},{n,},{n,m})后?時,匹配模式是?貪婪的。?貪婪模式盡可能少的匹配所搜索的字符串,?默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串“oooo”,“o+?”將匹配單個“o”,?“o+”將匹配所有“o”。

  .點

匹配除“\r\n”之外的任何單個字符。要匹配包括“\r\n”在內的任何字符,請使?像“[\s\S]”的模式。

  (pattern)

匹配pattern并獲取這?匹配。所獲取的匹配可以從產?的Matches集合得到,在VBScript中使?SubMatches集合,在JScript中則使?$0…$9屬性。要匹配圓括號字符,請使?“(”或“)”。

  (?:pattern)

匹配pattern但不獲取匹配結果,也就是說這是個?獲取匹配,不進?存儲供以后使?。這在使?或字符“(|)”來組合?個模式的各個部分是很有?。例如“industr(?:y|ies)”就是?個?“industry|industries”更簡略的表達式。

  (?=pattern)

正向肯定預查,在任何匹配pattern的字符串開始處匹配查找字符串。這是?個?獲取匹配,也就是說,該匹配不需要獲取供以后使?。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預查不消耗字符,也就是說,在?個匹配發?后,在最后?次匹配之后?即開始下?次匹配的搜索,?不是從包含預查的字符之后開始。

  (?!pattern)

正向否定預查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是?個?獲取匹配,也就是說,該匹配不需要獲取供以后使?。例如
“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

  (?<=pattern)

反向肯定預查,與正向肯定預查類似,只是?向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。

  (?<!pattern)

反向否定預查,與正向否定預查類似,只是?向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。

  x|y

匹配x或y。例如,“z|food”能匹配“z”或“food”或"zood"(此處請謹慎)。 “(z|f)ood”則匹配“zood”或“food”。

  [xyz]

字符集合。匹配所包含的任意?個字符。例如,“[abc]”可以匹配“plain”中的“a”。

  [^xyz]

負值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。

  [a-z]

字符范圍。匹配指定范圍內的任意字符。例如,“[a-z]”可以匹配“a”到“z”范圍內的任意?寫字母字符。
注意:只有連字符在字符組內部時,并且出現在兩個字符之間時,才能表?字符的范圍; 如果出字符組的開頭,則只能表?連字符本?.

  [^a-z]

負值字符范圍。匹配任何不在指定范圍內的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范圍內的任意字符。

  \b

匹配?個單詞邊界,也就是指單詞和空格間的位置(即正則表達式的“匹配”有兩種概念,?種是匹配字符,?種是匹配位置,這?的\b就是匹配位置的)。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。

  \B

匹配?單詞邊界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。

  \cx

匹配由x指明的控制字符。例如,\cM匹配?個Control-M或回車符。x的值必須為A-Z或a-z之?。否則,將c視為?個原義的“c”字符。

  \d

匹配?個數字字符。等價于[0-9]。

   \D

匹配?個?數字字符。等價于[^0-9]。

  \f

匹配?個換頁符。等價于\x0c和\cL。

  \n

匹配?個換?符。等價于\x0a和\cJ。

  \r

匹配?個回車符。等價于\x0d和\cM。

  \s

匹配任何不可見字符,包括空格、制表符、換頁符等等。等價于[\f\n\r\t\v]。

  \S

匹配任何可見字符。等價于[^ \f\n\r\t\v]。\t匹配?個制表符。等價于\x09和\cI。

  \v

匹配?個垂直制表符。等價于\x0b和\cK。\w匹配包括下劃線的任何單詞字符。類似但不等價于“[A-Za-z0-9_]”,這?的"單詞"字符使?Unicode字符集。

  \W

匹配任何?單詞字符。等價于“[^A-Za-z0-9_]。

  \xn

匹配n,其中n為?六進制轉義值。?六進制轉義值必須為確定的兩個數字長。例如,“\x41”匹配“A”。“\x041”則等價于“\x04&1”。正則表達式中可以使?ASCII編碼。

  \num

匹配num,其中num是?個正整數。對所獲取的匹配的引?。例如,“(.)\1”匹配兩個連續的相同字符。

  \n

標識?個?進制轉義值或?個向后引?。如果\n之前?少n個獲取的?表達式,則n為向后引?。否則,如果n為?進制數字(0-7),則n為?個?進制轉義值。

  \nm

標識?個?進制轉義值或?個向后引?。如果\nm之前?少有nm個獲得?表達式,則nm為向后引?。如果\nm之前?少有n個獲取,則n為?個后跟?字m的向后引?。如果前?的條件都不滿?,若n和m均為?進制數字(0-7),則\nm將匹配?進制轉義值nm。

  \nml

如果n為?進制數字(0-7),且m和l均為?進制數字(0-7),則匹配?進制轉義值nml。

  \un

匹配n,其中n是?個?四個?六進制數字表?的
Unicode字符。例如,\u00A9匹配版權符號(?)。

  \< \>

匹配詞(word)的開始(<)和結束(>)。例如正則表達式<the>能夠匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:這個元字符不是所有的軟件都?持的。

  \( \)

將( 和 ) 之間的表達式定義為“組”(group),并且將匹配這個表達式的字符保存到?個臨時區域(?個正則表達式中最多可以保存9個),它們可以? \1 到\9 的符號來引?。

  |

將兩個匹配條件進?邏輯“或”(Or)運算。例如正則表達式(him|her)匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs tothem."。注意:這個元字符不是所有的軟件都?持的。

  +

匹配1或多個正好在它之前的那個字符。例如正則表達式9+匹配9、99、999等。注意:這個元字符不是所有的軟件都?持的。

  ?

匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都?持的。

  {i} {i,j}

匹配指定數?的字符,這些字符是在它之前的表達式定義的。例如正則表達式A[0-9]{3} 能夠匹配字符"A"后?跟著正好3個數字字符的串,例如A123、A348等,但是不匹配A1234。?正則表達式[0-9]{4,6} 匹配連續的任意4個、5個或者6個數字.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容