讀懂簡單的正規表示式

2021-07-24 16:27:45 字數 2053 閱讀 9750

讀懂簡單的正規表示式

最近學習過程中,遇到了一段用正規表示式驗證email輸入的**

if(!/^\w+@\w+.\w+$/.test(value)){}//ps:這裡的正規表示式有問題,後面已修正,看的書絕壁是盜版(╬▔皿▔)

便尋思查了一下正規表示式的一些用法,學習總結了一下

正規表示式是一種字串匹配規則,可以用來檢查乙個字串是否含有某種子串(可以是具體的子串或一類子串,如是否含有數字等等)、將匹配的子串做替換或者從某個字串中取出符合某個條件的子串等,很多程式語言都對此有所支援,利用正規表示式對字串進行操作

它就是對字串進行操作的組合起來的一系列邏輯公式,即用事先定義好的一些特定的字元和特定字元的組合,組成的乙個"字串",最終對(如程式中給定的)字串進行過濾(看是否匹配)

為什麼不用一般的字串的匹配判斷呢?首先因為正規表示式具有極大的靈活性、邏輯性和功能性,其次可以用極簡單的方式達到字串的複雜控制

寫正規表示式有點像搭積木,複雜的功能總可以拆分開來,由不同的元素(也就是子表示式)對應,再用合適的關係將它們組合起來

正規表示式的常見用法:

1.兩個特殊的符號'^'和'$'。他們的作用是分別指出乙個字串的開始和結束。例子如下:

"^the":表示所有以"the"開始的字串("there","the cat"等)

"of despair$":表示所以以"of despair"結尾的字串

"^abc$":表示開始和結尾都是"abc"的字串,只有"abc"自己了

"abcd":表示任何包含"abcd"的字串

2.再如'*','+'和'?'這三個符號,分別表示大於等於0個,大於等於1個,0或1個同一字元或字串出現的次數。例子如下:

"ab*":表示字串中a後面跟著零個或若干個b。("a", "ab", "abbb",……)

"a(bc)+":表示在字串中a的後面跟至少乙個"bc"子字串

"ab?":表示字串中a後面跟著零個或者乙個b

"a?b+$":表示在字串的末尾有零個或乙個a跟著乙個或幾個b

或者用{}代替上述字元。如:

"ab":表示乙個字串有乙個a跟著2個b("abb")

"ab":表示乙個字串有乙個a跟著至少1個b        //但是ab這樣的語法是不行的

"ab":表示乙個字串有乙個a跟著3到5個b

"ab":表示乙個字串有乙個a跟著0或1個b

3.特殊字元'.'可以替代任何字元。如:

"a.[0-9]":表示乙個字串有乙個"a"後面跟著乙個任意字元和乙個數字//[0-9]代表0-9之間的任意數字

"^.$":表示有任意三個字元的字串(長度為3個字元)

還有"|"表示」或「,如:

"(a¦b)*c":表示一串"a""b"混合的字串後面跟乙個"c",相當於[ab]*ca

4.上面的方括號''表示某些字元允許在乙個字串中的某一特定位置出現,如:

"[ab]":表示乙個字串有乙個"a"或"b"(相當於"a|b");

"[a-d]":表示乙個字串包含小寫的'a'到'd'中的乙個(相當於"a|b|c|d"或者用"[abcd]");

"^[a-za-z]":表示乙個以字母開頭的字串;

"[0-9]%":表示乙個百分號前有一位的數字;

",[a-za-z0-9]$":表示乙個字串以乙個逗號後面跟著乙個字母或數字結束。

你也可以在方括號裡用'^'(相當於c/c++中的異或)表示不希望出現的字元,'^'應在方括號裡的第一位。(如:"%[^a-za-z]%"表示兩個百分號中不應該出現字母)。

假若想輸出展示這些特定的字元,則必須在"^ . $ () | * + ? 中正規表示式的含義了,連個"/"之間的便是正規表示式,"^"與"$"之間的字串必須要完全符合匹配規則,"\w"表示用於匹配的字母、數字或下劃線,"+"表示必須要有至少1個以上的字元,總結起來就是我們常規的email格式的思維,即***@***.***(如[email protected])

個人認為正規表示式/^\w+@\w+.\w+$/應該修改為/^(\w)+@(\w)+((\.)\w+)$/,括號"()"用不用無所謂,只是為了方便理解,因為要檢測"."應該用轉義字元"\."表示,經測試證明確實如此

簡單讀懂正規表示式

正規表示式中的括號 是為了提取匹配的字串。表示式中有幾個 就有幾個相應的匹配字串。s 表示連續空格的字串。是定義匹配的字元範圍。比如 a za z0 9 表示相應位置的字元要匹配英文本元和數字。s 表示空格或者 號。一般用來表示匹配的長度,比如 s 表示匹配三個空格,s表示匹配一到三個空格。0 9 ...

正規表示式簡單語法及常用正規表示式

基本符號 表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 表示匹配 零次到多次 表示匹配 一次到多次 至少有一次 表示匹配零次或一次 表示匹配單個字元 表示為或者,兩項中取一項 小括號表示匹配括號中全部字元 中括號表示匹配括號中乙個字元 ...

正規表示式簡單語法及常用正規表示式

表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 匹配中文字元的正規表示式 u4e00 u9fa5 匹配雙位元組字元 包括漢字在內 x00 xff 匹配空行的正規表示式 n s r 匹配html標記的正規表示式 匹配首尾空格的正規表示式 s...