相信很多人都知道正規表示式,但很多人的第一感覺就是難學,因為看第一眼時,覺得完全沒有規律可尋,而且全是一堆各種各樣的特殊符號,完全不知所雲。其實正規表示式沒有大家想像中的那麼難,今天我們就帶大家快速了解JavaScript正規表示式!
一、什麼是正規表示式
#正規表示式是一種特殊的字串模式,用於匹配一組字串,就好比用模具做產品,而正則就是這個模具,定義一種規則去匹配符合規則的字元。
正規表示式(regular expression)描述了一個字串匹配的模式(pattern),可以用來檢查一個字串是否含有某種子字串、將匹配的子字串替換或從某個字串中取出符合某一條件的子串等。
說白了正規表示式就是處理字串的,我們可以用它來處理一些複雜的字串。
二、正規表示式規則
1.1 普通字元
字母、數字、漢字、底線、以及後邊章節中沒有特殊定義的標點符號,都是"普通字元"。表達式中的普通字符,在匹配一個字串的時候,匹配與之相同的一個字符。
舉例1:表達式"c",在符合字串"abcde" 時,符合結果是:成功;符合的內容是:"c";符合到的位置是:開始於2,結束於3。 (註:下標從0開始或從1開始,因目前程式語言的不同而可能不同)
舉例2:表達式"bcd",在符合字串"abcde " 時,配對結果是:成功;配對的內容是:"bcd";配對到的位置是:開始於1,結束於4。
三、正規表示式中的特殊字元
字元含意
\ 做為轉意,即通常在"\"後面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿後/\b/,轉意為匹配一個單字的邊界。
-或-
對正規表示式功能字元的還原,如"*"符合它前面元字元0次或多次,/a*/將符合a,aa,aaa,加了"\"後,/a\*/將只符合"a*"。
^ 符合一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a"
$ 匹配一個輸入或一行的結尾,/a$/匹配" An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba*/將匹配b,ba
(x) 匹配x保存x在名為$1 ...$9的變數中
x|y 配對x或y
{n} 精確配對n次
{n,} 配對n次以上
{n,m} 配對n-m次
[xyz] 字元集(character set),符合這個集合中的任一一個字元(或元字元)
[^xyz] 不符合這個集合中的任何一個字元
[\b]符合一個退格符
\b 符合一個字的邊界
\B 符合一個字的非邊界
\cX 這兒,X是控制符,/\cM/符合Ctrl-M
# \d 符合一個字數字符,/\d/ = /[0-9]/
\D 符合一個非字數字符,/\D/ = /[^0-9]/
\n 符合一個換行符
\r 匹配一個回車符
\s 匹配一個空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一個非空白字符,等於/[^\n\f\r\t\v]/
\t 匹配一個製表符
\v 匹配一個重直製表符
\w 匹配一個可以組成單字的字元( alphanumeric,這是我的意譯,含數字),包括底線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9]
\W 匹配一個不可以組成單字的字符,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。
四、正規表示式基本語法
#兩個特殊的符號'^'和' $'。他們的作用是分別指出一個字串的開始和結束。
例子如下:
"^The":表示所有以"The"開始的字串("There","The cat"等);
"of despair$":表示所以以"of despair"結尾的字串;
"^abc$":表示開始和結尾都是"abc"的字串-呵呵,只有"abc"自己了;
"notice":表示任何包含"notice"的字串。
象最後那個例子,如果你不使用兩個特殊字符,你就在表示要查找的串在被查找串的任意部分——你並
不把它定位在某一個頂端。
其它還有'*','+'和'?'這三個符號,表示一個或一序列字元重複出現的次數。
它們分別表示“沒有或更多”,“一次或更多”還有“沒有或一次”。
下面有幾個例子:
"ab*":表示字串有一個a後面跟著零個或若干個b。 ("a", "ab", "abbb",…);
"ab+":表示一個字串有一個a後面跟著至少一個b或更多;
#" ab?":表示一個字串有一個a後面跟著零個或一個b;
"a?b+$":表示在字串的末尾有零個或一個a跟著一個或幾個b 。
你也可以使用範圍,用大括號括起,用以表示重複次數的範圍。
"ab{2}":表示一個字串有一個a跟著2個b("abb");
"ab{2,}":表示一個字串有一個a跟著至少2個b;
"ab{3,5}":表示一個字串有一個a跟著3到5個b。
請注意,你必須指定範圍的下限(如:"{0,2}"而不是"{,2}")。
還有,你可能注意到了,'*','+'和'?'相當於"{0,}","{1,}"和"{0,1}"。
還有一個'¦',表示「或」操作:
"hi¦hello":表示一個字串裡有"hi"或"hello";
"(b¦cd)ef":表示"bef"或"cdef";
"(a¦b)*c":表示一串"a""b"混合的字串後面接一個"c";
'.'可以替代任何字元:
"a.[0-9]":表示一個字串有一個"a"後面跟著一個任意字元和一個數字;
"^.{3}$":表示有任意三個字元的字串(長度為3個字元);
方括號表示某些字元允許在一個字串中的某一特定位置出現:
"[ab]":表示一個字串有一個"a"或"b"(相當於"a¦b");
"[a-d]":表示一個字串包含小寫的'a'到'd'中的一個(相當於"a¦b¦c¦d"或" [abcd]");
"^[a-zA-Z]":表示一個以字母開頭的字串;
"[0-9]%":表示一個百分號前有一位的數字;
",[a-zA-Z0-9]$":表示一個字串以一個逗號後面跟著一個字母或數字結束。
你也可以在方括號裡用'^'表示不希望出現的字符,'^'應在方括號裡的第一位。
(如:"%[^a-zA-Z]%"表示兩個百分號中不應該出現字母)。
為了逐字表達,你必須在"^.$()¦*+?{\"這些字符前加上轉移字符'\'。
請注意在方括號中,不需要轉義字元。
總結
#其實只是對正規表示式不了解而以,了解了你會發現,原來就這樣啊正則表達式所用的相關字符其實不多,也不難記,更不難懂,唯一難的就是組合起來之後,可讀性比較差,而且不容易理解,本文旨在讓大家對正規有基本的了解,能看得懂簡單的正規表示式,寫得出簡單的正規表示式,用以滿足日常開發中的需求即可。
相關推薦:
########################## ########怎麼樣才能靈活#########使用JavaScript###正規表示式######以上是JavaScript中正規表示式的意義與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!