JavaScript 正則表達(dá)式

2018-09-28 18:06 更新

正則表達(dá)式

正則表達(dá)式是一個(gè)對象,這個(gè)對象描述一種字符模式。

JavaScript RegExp 類代表正則表達(dá)式,字符串和 RegExp 都定義了方法,在方法中使用正則表達(dá)式來執(zhí)行文本中強(qiáng)大的模式匹配和搜索替換功能。

語法

正則表達(dá)式可以被 RegExp() 構(gòu)造函數(shù)定義,如下所示:

    var pattern = new RegExp(pattern, attributes);   
    or simply   
    var patter = /pattern/attributes;

參數(shù)描述:

  • pattern:是一個(gè)字符串,指定了正則表達(dá)式的模式或其他正則表達(dá)式。
  • attributes:是一個(gè)可選的字符串,包含屬性 "g"、"i" 和 "m",分別用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配。

方括號

方括號 ([]) 用于正則表達(dá)式的上下文中時(shí)有特殊意義,用來查找一系列字符。

表達(dá)描述
[...]查找方括號之間的任何字符
[^...]查找任何不在方括號之間的字符
[0-9]查找任何從 0 至 9 的數(shù)字
[a-z]查找任何小寫 a 到小寫 z 的字符
[A-Z]查找任何大寫 A 到大寫 Z 的字符
[a-Z]查找任何小寫 a 到大寫 Z 的字符

上面所示的范圍為一般情況;還可以使用范圍 (0-3) 匹配任何從 0 到 3 的十進(jìn)制數(shù)字,或范圍 (b-v) 來匹配任何從小寫 b 到小寫 v 的字符。

量詞

方括號括起來的字符序列或單個(gè)字符出現(xiàn)的頻率或位置可以用一個(gè)特殊的符號來表示。每個(gè)特殊字符都有一個(gè)特定的含義。+、*、? 和 $ 符號都遵循一個(gè)字符序列模式。

表達(dá)描述
p+匹配任何包含至少一個(gè) p 的字符串
p*匹配任何包含零個(gè)或多個(gè) p 的字符串
p?匹配任何包含零個(gè)或一個(gè) p 的字符串
p{N}匹配包含 N 個(gè) p 的序列字符串
p{2,3}匹配包含 2 或 3 個(gè) p 的序列的字符串
p{2,}匹配包含至少 2 個(gè) p 的序列的字符串
p$匹配任何結(jié)尾為 p 的字符串
^p匹配任何開頭為 p 的字符串

例子

下面的例子會(huì)幫助理清字符匹配的概念。

表達(dá)描述
[^a-zA-Z]匹配任何不包含從 a 到 z 和從 A 到 Z 中任何字符的字符串
p.p匹配任何以一個(gè) p 開始、其次是任意字符、緊隨其后的是另一個(gè) p 的字符串
^.{2}$匹配任何包含兩個(gè)字符的字符串
<b>(.*)</b>匹配任何封閉在 <b> 和 </b> 內(nèi)的字符串
p(hp)*匹配任何包含一個(gè) p、緊隨其后的零個(gè)或多個(gè) hp 序列的字符串

原義字符

字符描述
Alphanumeric它自己
\0查找 NUL 字符(\u0000)
\t查找制表符(\u0009)
\n查找換行符(\u000A)
\v查找垂直制表符(\u000B)
\f查找換頁符(\u000C)
\r查找回車符(\u000D)
\xnn指定的以十六進(jìn)制數(shù) nn 表示的拉丁字符;例如 \x0A 和 \n 表示的一樣
\uxxxx查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符,例如 \u0009 和 \t 表示的一樣
\cX控制字符 ^X;例如 \cJ 相當(dāng)于換行符 \n

元字符

元字符:在一個(gè)字母字符之前加上一個(gè)反斜杠,使這個(gè)組合具有特殊的含義。

例如,您可以使用 '\d' 元字符搜索大量資金數(shù)額:/([\d]+)000/,這里 \d 將尋找任何數(shù)值字符的字符串。

下面是元字符的列表,使用 PERL 風(fēng)格的正則表達(dá)式表達(dá)。

字符描述
.單個(gè)字符
\s空白字符(空格、制表符、換行符)
\S非空白字符
\d數(shù)字字符(0-9)
\D非數(shù)字字符
\w單詞字符(a-z,A-Z,0-9,_)
\W非單詞字符
[\b]一個(gè)文字退格(特殊情況)
[aeiou]匹配一個(gè)在給定集合內(nèi)的字符
[^aeiou]匹配一個(gè)不在給定集合內(nèi)的字符
[foo|bar|baz]匹配任何指定的備選方案

修飾

幾個(gè)可用的 regexp 修飾符,它能使你的工作更容易,比如大小寫敏感、搜索多個(gè)行等。

字符描述
i執(zhí)行對大小寫不敏感的匹配
m執(zhí)行多行匹配
g執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)

RegExp屬性

這是 RegExp 的各個(gè)屬性及對應(yīng)的屬性描述的列表。

屬性描述
constructor指定創(chuàng)建一個(gè)對象原型的函數(shù)
globalRegExp 對象是否具有標(biāo)志 g
ignoreCaseRegExp 對象是否具有標(biāo)志 i
lastIndex一個(gè)整數(shù),標(biāo)示開始下一次匹配的字符位置
multilineRegExp 對象是否具有標(biāo)志 m
source正則表達(dá)式的源文本

RegExp方法

這是 RegExp 的各個(gè)方法及對應(yīng)的屬性描述的列表。

方法描述
exec()檢索字符串中指定的值。返回找到的值,并確定其位置
test()檢索字符串中指定的值。返回 ture 或 false
toSource返回一個(gè)對象字面值代表指定的對象;您可以使用這個(gè)值來創(chuàng)建一個(gè)新的對象。
toString()返回一個(gè)代表指定對象的字符串。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號