正則表達(dá)式是一個(gè)對(duì)象,這個(gè)對(duì)象描述一種字符模式。
JavaScript RegExp 類代表正則表達(dá)式,字符串和 RegExp 都定義了方法,在方法中使用正則表達(dá)式來(lái)執(zhí)行文本中強(qiáng)大的模式匹配和搜索替換功能。
正則表達(dá)式可以被 RegExp() 構(gòu)造函數(shù)定義,如下所示:
var pattern = new RegExp(pattern, attributes);
or simply
var patter = /pattern/attributes;
參數(shù)描述:
方括號(hào) ([]) 用于正則表達(dá)式的上下文中時(shí)有特殊意義,用來(lái)查找一系列字符。
表達(dá) | 描述 |
---|---|
[...] | 查找方括號(hào)之間的任何字符 |
[^...] | 查找任何不在方括號(hào)之間的字符 |
[0-9] | 查找任何從 0 至 9 的數(shù)字 |
[a-z] | 查找任何小寫(xiě) a 到小寫(xiě) z 的字符 |
[A-Z] | 查找任何大寫(xiě) A 到大寫(xiě) Z 的字符 |
[a-Z] | 查找任何小寫(xiě) a 到大寫(xiě) Z 的字符 |
上面所示的范圍為一般情況;還可以使用范圍 (0-3) 匹配任何從 0 到 3 的十進(jìn)制數(shù)字,或范圍 (b-v) 來(lái)匹配任何從小寫(xiě) b 到小寫(xiě) v 的字符。
方括號(hào)括起來(lái)的字符序列或單個(gè)字符出現(xiàn)的頻率或位置可以用一個(gè)特殊的符號(hào)來(lái)表示。每個(gè)特殊字符都有一個(gè)特定的含義。+、*、? 和 $ 符號(hào)都遵循一個(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 | 匹配任何開(kāi)頭為 p 的字符串 |
下面的例子會(huì)幫助理清字符匹配的概念。
表達(dá) | 描述 |
---|---|
[^a-zA-Z] | 匹配任何不包含從 a 到 z 和從 A 到 Z 中任何字符的字符串 |
p.p | 匹配任何以一個(gè) p 開(kāi)始、其次是任意字符、緊隨其后的是另一個(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 | 查找換頁(yè)符(\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 修飾符,它能使你的工作更容易,比如大小寫(xiě)敏感、搜索多個(gè)行等。
字符 | 描述 |
---|---|
i | 執(zhí)行對(duì)大小寫(xiě)不敏感的匹配 |
m | 執(zhí)行多行匹配 |
g | 執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止) |
這是 RegExp 的各個(gè)屬性及對(duì)應(yīng)的屬性描述的列表。
屬性 | 描述 |
---|---|
constructor | 指定創(chuàng)建一個(gè)對(duì)象原型的函數(shù) |
global | RegExp 對(duì)象是否具有標(biāo)志 g |
ignoreCase | RegExp 對(duì)象是否具有標(biāo)志 i |
lastIndex | 一個(gè)整數(shù),標(biāo)示開(kāi)始下一次匹配的字符位置 |
multiline | RegExp 對(duì)象是否具有標(biāo)志 m |
source | 正則表達(dá)式的源文本 |
這是 RegExp 的各個(gè)方法及對(duì)應(yīng)的屬性描述的列表。
方法 | 描述 |
---|---|
exec() | 檢索字符串中指定的值。返回找到的值,并確定其位置 |
test() | 檢索字符串中指定的值。返回 ture 或 false |
toSource | 返回一個(gè)對(duì)象字面值代表指定的對(duì)象;您可以使用這個(gè)值來(lái)創(chuàng)建一個(gè)新的對(duì)象。 |
toString() | 返回一個(gè)代表指定對(duì)象的字符串。 |
更多建議: