首先就正則兩個(gè)字解釋:顧名思義,正則可以理解為正確的規(guī)則.
先來復(fù)習(xí)一遍js中對(duì)字符串的操作
search()尋找字符串中某字符第一次出現(xiàn)的位置(下標(biāo)),若找不到返回-1.
substring(a,b)不包含結(jié)束位置,ab指的是下標(biāo).獲取a到b之間的字符.
charAt(a),根據(jù)下標(biāo)找出字符串里的字符.注意search返回下標(biāo),而charAt返回字符.
split("-")在字符串中若有"-",則用"-"分割字符串,返回?cái)?shù)組.
match(re)匹配 檢索字符串,按照re的規(guī)則提取出來字符串,返回?cái)?shù)組
replace(a,b)將a替換為b
正則表達(dá)式可以極大簡(jiǎn)化普通字符串操作(簡(jiǎn)化90%吧,不夸張的說)
正則表達(dá)式僅僅是一個(gè)計(jì)算機(jī)方便識(shí)別并操作字符串的式子,
RegExp是其大名,但是比較麻煩,比如
var str="abAd";
var re=new Reg Exp("a","i"); 第一個(gè)參數(shù)即為正則表達(dá)式,第二個(gè)參數(shù)(即正則的選項(xiàng))為忽略大小寫,ignore
官方說法是js風(fēng)格的正則,但是它有個(gè)小名更簡(jiǎn)單,以上可以簡(jiǎn)寫為
var str="aijg";
var re=/a/i;
真的是超級(jí)簡(jiǎn)單,所以大家都是用小名.官方說法為perl風(fēng)格.
除了直接寫要找的字符外,正則還有一些轉(zhuǎn)義(轉(zhuǎn)變意義)字符更方便
\d digital代表某個(gè)數(shù)字, \D 大寫就代表相反區(qū)間[^0-9],
[]表示在一個(gè)范圍內(nèi)取一個(gè)值例如/1a2|1b2|1c2/可以簡(jiǎn)寫為/1[abc]2/
^在[]中代表排除,意為除此之外.-代表范圍,0-9代表0到9的數(shù)字,
\w word 字符[a-z0-9_] \W大寫代表相反[^a-z0-9_]
\s space 空白 代表空格,制表符等空的東西 \S相反,所有不空的東西
正則里的量詞:{m,n}代表m到n個(gè)字符,不寫m代表最多n個(gè),不寫n代表至少m個(gè),只寫m代表正好m個(gè)例如
\d{m,n}意為m到n個(gè)數(shù)字,+表示多個(gè)的意思例如/\d+/,多個(gè)數(shù)字.相當(dāng)于\d{1,}.*表示{0,}但不建議用,?等于{0,1},\.代表.(點(diǎn))
^不在[]里,代表行首,$代表行尾,例如var re=str.repalce(/^\s+|\s+$/g,"");替換字符串左右兩邊的空格為空(去掉行首尾空格);
|是或的意思g是global 正則選項(xiàng),全局匹配,意為全部.