JavaScript RegExp對象
RegExp:正則表達式的簡寫
什么是RegExp
正則表達式描述了字符的模式對象
當檢索某個文本時,可以使用一種模式來描述要檢索的內(nèi)容.RegExp就是這種模式
簡單的模式可以是一個單獨的字符
更復雜的模式包括了更多的字符,可以用于解析、格式檢查蓝晒、替換等等
可以規(guī)定字符串中的檢索位置,以及要檢索的字符類型等等
語法
var patt=new RegExp(pattern,modifiers)
//或更簡單的方法
var patt=/pattern/modifiers
模式描述了一個表達式模型
修飾符描述了檢索是否全局,區(qū)分大小寫等
當使用構造函數(shù)創(chuàng)造正則對象時,需要常規(guī)的字符轉義規(guī)則(在前面加反斜杠)
var re = new RegExp("\\w+")
var re = /\w+/
RegExp修飾符
修飾符用于執(zhí)行不區(qū)分大小寫和全文搜索
i - 修飾符是用來執(zhí)行不區(qū)分大小寫的匹配
g - 修飾符用來執(zhí)行全文的搜索(而不是在第一個找到就停止,而是找到所有的匹配)
var str = "heLlo wOrld"
str.match(/l/g)//["l","l"]
str.match(/l/i)//["L"]
str.match(/l/gi)//["L","l","l"]
修飾符
RegExp修飾符:
修飾符 | 描述 |
---|---|
i | 執(zhí)行對大小寫不敏感的匹配 |
g | 執(zhí)行全局匹配(查找所有匹配而非在匹配到第一個元素時停止) |
m | 進行多行匹配 |
方括號
方括號用于查找某個范圍內(nèi)的字符:
表達式 | 描述 |
---|---|
[abc] | 查找方括號之間的任何字符 |
[^abc] | 查找任何不在方括號之間的字符 |
[0-9] | 查找任何從0至9的數(shù)字 |
[a-z] | 查找任何從小寫a到小寫z的字符 |
[A-Z] | 查找任何從大寫A到大寫Z的字符 |
[A-z] | 查找任何從大寫A到小寫z的字符 |
[str] | 查找給定集合內(nèi)的任何字符 |
[^str] | 查找除給定集合內(nèi)的任何字符 |
元字符
元字符是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
. | 查找單個字符,除了換行和結束符 |
\w | 查找單詞字符 |
\W | 查找非單詞字符 |
\d | 查找數(shù)字 |
\D | 查找非數(shù)字字符 |
\s | 查找空白字符 |
\S | 查找非空白字符 |
\b | 匹配單詞邊界 |
\B | 匹配非單詞邊界 |
\0 | 查找NUL字符 |
\n | 查找換行符 |
\f | 查找換頁符 |
\r | 查找換車符 |
\t | 查找制表符 |
\v | 查找垂直制表符 |
\xxx | 查找以八進制數(shù)xxx規(guī)定的字符 |
\xdd | 查找以十六進制數(shù)dd規(guī)定的字符 |
\uxxxx | 查找以十六進制數(shù)xxxx規(guī)定的Unicode字符 |
量詞
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少一個n的字符串 |
n* | 匹配任何包含零個或者多個n的字符串 |
n? | 匹配任何包含零個或者一個n的字符串 |
n{X} | 匹配包含X個n的序列的字符串 |
n{X,Y} | 匹配包含X個或者Y個n的序列字符串 |
n{X,} | 匹配包含至少X個n的序列的字符串 |
n$ | 匹配任何結尾為n的字符串 |
^n | 匹配任何開頭為 n 的字符串 |
?=n | 匹配任何其后緊接指定字符串 n 的字符串 |
?!n | 匹配任何其后沒有緊接指定字符串 n 的字符串 |
RegExp對象方法
方法 | 描述 |
---|---|
compile | 編譯正則表達式 |
exec | 檢索字符串中指定的值,返回找到的值,并確定其位置 |
test | 檢索字符串中指定的值,返回true或false |
支持正則表達式的Strng對象的方法
方法 | 描述 |
---|---|
search() | 檢索與正則表達式想匹配的值 |
match() | 找到一個或多個正則表達式的匹配 |
replace() | 替換與正則表達式匹配的子串 |
split() | 把字符串分割為字符串數(shù)組 |