RegExp對象:正則表達式
1.建立語法
1.1.字面量法
例如:var reg = /word/igm;
1.2.構造函數法 new RegExp('345oiu','img') new RegExp(/\d/ig)windows
2.修飾符
2.1.i表示忽略大小寫
2.2.g全文查找
2.3.m數組
3.直接量字符
例如:字符o,\n等。函數
4.字符類
又叫字符集合,語法[直接量字符若干] 例如:[abc]或者[範圍] [a-z0-9]字符類中的任意單個字符可以與某個子字符串匹配,那麼就認爲整個字符類與該子字符串匹配。對象
5.反義
5.1.[……]與[^……]
參見: ^
注意:脫字符(^)必須出如今字符類中的第一個字符位置時,才表示反義,不然,只表示脫字符自己。
5.2.\d與\D
\d表明任意單個阿拉伯數字。\D表明任意單個非阿拉伯數字。
5.3.\w與\W
\w任意單個單詞字符。\W任意單個非單詞字符。單詞字符指的是:阿拉伯數字、英文字母、下劃線( _ )。
5.4.\s與\S
\s表示任意單個非打印字符。\S表示任意單個可見字符。
5.5.\b與\B
\b表示單詞邊界。\B表示非單詞邊界。注意:單詞邊界是個位置,不是空格或其它字符字符串
6.轉義
6.1.正則中的捺斜槓(\)一般有特殊語法。
例如:\d表示單個阿拉伯數字,並不表示一個斜槓和一個字母d;又如:\w表示任意單個單詞字符,也不表示一個斜槓和一個字母w。
6.2.轉義的語法:在要被轉義成普通字符的字符的左側添加捺斜槓。
例如:var reg = /\/ig;可以匹配捺斜槓自己。input
7.限定符
用於限制限定符左側緊挨着的單個字符(或子表達式)重複的次數。
7.1.?
表示緊挨着它的左側的單個字符出現0次或1次。
7.2.+
表示緊挨着它的左側的單個字符出現至少1次。
7.3.*
表示緊挨着它的左側的單個字符出現至少0個,最多不限。
7.4.{n}
n表示大於或等於零的整數,{n}表示緊挨着它的左側的單個字符或子表達式出現n次。
7.5.非貪婪模式
匹配時儘量少的佔用字符。只要關閉了貪婪模式,就進入了非貪婪模式。關閉貪婪模式的方法是:在限定符的後面加一個問號(?)便可。string
8.定位符
8.1.^
參見: [……]與[^……]
在單行模式下,表示字符串的開始位置。注意,並非第一個字符,而是第一個字符的左邊的位置。在多行模式下,表示字符串的開始位置和一行的開始位置。
8.2.$
在單行模式下,表示字符串的結束位置。注意,並非最後一個字符,而是最後一個字符的右邊的位置。在多行模式下,表示字符串的結束位置和一行的結束位置。
8.3.\b
單詞邊界。
8.4.\B
非單詞邊界。it
9.選擇與分組
9.1.分組
用一對小括號包圍的模式,就被編爲了一組。例如:var reg = /(zo)+/ig;其中zo被編爲一組,被後面的限定符總體限定。
9.2.選擇
就是「或者」的意思。用「|」表示。例如:構造函數
10.子表達式 通過分組後,每一個組都看作是一個「子表達式」。
10.1.捕捉
捕捉的意思是:當每次發生與整個正則表達式匹配的時候,都在匹配項中存在與子表達式匹配的項,這些項通常稱爲「子匹配」,這些子匹配默認會被自動保存(保存在一個稱爲「全局正則表達式對象」的屬性中),把子匹配自動保存的過程,就被稱爲捕捉。被捕捉的子匹配能夠在後續程序中使用。
在父字符串查找匹配子字符(字表達式)叫作捕捉,存在了RegExp全局對象屬性($1~$9,
$1~$9裏面存的值是默認空字符串)中
如:'nregrt好啊'.replace(/<(\w+)>.*<\/\1>/ig,'你好')=>你好好啊;
\1表示後向引用 \1 === ,\1引用的$1裏面的值;每次匹配都會更新$裏面的值
10.2.非捕捉:
當僅想給正則表達式分組,而不想捕捉子匹配時,那麼就要關閉捕捉功能。作法是在小括號中開頭部分寫好英文的問號和冒號。例如:var reg = /^0?1(?:3|4|5|7|8)\d{9}$/ig;中的小括號就是非捕捉性的子表達式
11.後向引用:
在正則表達式的模式中,用 \1 表示對第一個子匹配的引用,用 \2 表示對第二個子匹配的引用, \3表示第三個……例如:/(\w+).*\1/中的 \1 就表示對左邊小括號中的子表達式的引用。可是,若是沒有捕獲子匹配,那麼這些 \1 , \2 ,\3 ……等就不表明後向引用。
12.全局RegExp對象及其$x屬性
13.預查
13.1.正向預查:
又叫零寬正向先行斷言。例如:var reg = /windows(?=\d+)/;可以匹配後面跟着若干數字的windows,卻不能匹配後面沒有數字的windows。注意:只匹配windows,而不匹配後面的數字,因此預查不消耗字符。
13.2.負向預查
又叫零寬負向先行斷言。例如:var reg = /windows(?!\d+)/;可以匹配後面沒有數字的windows,卻不能匹配後面跟着若干數字的windows。注意:只匹配windows,而不匹配後面的數字,因此預查不消耗字符。
14.正則匹配三原則
14.1.從左往右
14.2.貪婪模式
14.3.儘可能匹配
用英文句點(.)表示除換行符(\n)以外的任意單個字符。
要匹配包括換行符在內的任意單個字符,建議用[\s\S]表示
注意:不要將全局 RegExp 對象與 正則表達式 對象混淆。儘管聽起來像是一回事,但它們是大相徑庭的。全局 RegExp 對象的屬性包含不斷更新的關於每一個匹配出現的信息,而正則表達式對象只包含出現正則表達式匹配的信息。
支持正則表達式的 String 對象的方法方法:
search 檢索與正則表達式相匹配的值。返回值:父串或reg匹配的子串的起始位置。
匹配不到return -1; 參數爲空: return 0
match 在父中找到一個或多個正則表達式的匹配或在父字符串內檢索指定的值,
返回指定的值(一個數組); 沒有找到任何匹配的文本將返回 null
參數爲空 返回 0:'',length:1;input:原對象
replace 替換與正則表達式匹配的子串。
split 把字符串分割爲字符串數組。
regExp對象的方法:
exec(string)方法用於檢索字符串中的正則表達式的匹配。和match方法類似 找到了匹配的文本,則返回一個結果數組。不然,返回 null
new RegExp('op','img').exec('opop');op是否存於opop中