首頁  >  文章  >  web前端  >  JavaScript中正規表示式的意義與使用

JavaScript中正規表示式的意義與使用

黄舟
黄舟原創
2017-11-09 16:52:041891瀏覽

相信很多人都知道正規表示式,但很多人的第一感覺就是難學,因為看第一眼時,覺得完全沒有規律可尋,而且全是一堆各種各樣的特殊符號,完全不知所雲。其實正規表示式沒有大家想像中的那麼難,今天我們就帶大家快速了解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]%"表示兩個百分號中不應該出現字母)。

為了逐字表達,你必須在"^.$()¦*+?{\"這些字符前加上轉移字符'\'。

請注意在方括號中,不需要轉義字元。

總結

#其實只是對正規表示式不了解而以,了解了你會發現,原來就這樣啊正則表達式所用的相關字符其實不多,也不難記,更不難懂,唯一難的就是組合起來之後,可讀性比較差,而且不容易理解,本文旨在讓大家對正規有基本的了解,能看得懂簡單的正規表示式,寫得出簡單的正規表示式,用以滿足日常開發中的需求即可。

相關推薦:

#js 常用正規表示式有哪些

JavaScript正規表示式影片教學

#javascript正規表示式的定義與介紹

#javascript正規表示式的定義與介紹

########################## ########怎麼樣才能靈活#########使用JavaScript###正規表示式######

以上是JavaScript中正規表示式的意義與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn