RegExp即正則表達式 對象用于規(guī)定在文本中檢索的內(nèi)容洁闰。
-
創(chuàng)建RegExp對象
var name=new RegExp(pattern, attributes);
參數(shù) pattern 是一個字符串,指定了正則表達式的模式或其他正則表達式万细。
參數(shù) attributes 是一個可選的字符串扑眉,包含屬性 "g"、"i" 和 "m"雅镊,分別用于指定全局匹配襟雷、區(qū)分大小寫的匹配和多行匹配。ECMAScript 標準化之前仁烹,不支持 m 屬性耸弄。如果 pattern 是正則表達式,而不是字符串卓缰,則必須省略該參數(shù)计呈。修飾符 描述 i 執(zhí)行對大小寫不敏感的匹配。 g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)征唬。 m 執(zhí)行多行匹配捌显。 -
RegExp的簡單模式--檢索一個單獨的字符。
定義:
var patt1=new RegExp("e");
使用該 RegExp 對象在一個字符串中檢索時总寒,將尋找的是字符 "e"扶歪。-
RegExp 對象的方法:test()、exec()摄闸、compile()
- test() 方法檢索字符串中的指定值善镰。返回值是 true 或 false。
document.write(patt1.test("The best things in life are free"));
結(jié)果:true - exec()檢索字符串中的指定值年枕。返回值是被找到的值炫欺。如果沒有發(fā)現(xiàn)匹配,則返回 null熏兄。
document.write(patt1.exec("The best things in life are free"));
結(jié)果:e
如果定義變量的時候品洛,增加一個全局參數(shù)g,即var patt1=new RegExp("e",g);
摩桶,運行一次exec()桥状,找到第一個“e”,并存儲其位置。如果再次運行 exec()典格,則從存儲的位置開始檢索岛宦,并找到下一個 "e",并存儲其位置耍缴。
例如:
結(jié)果:eeeeeenulldo{ result=patt1.exec("The best things in life are free") document.write(result) }while(result != null)
- compile() 方法用于改變 RegExp砾肺。
compile() 既可以改變檢索模式,也可以添加或刪除第二個參數(shù)防嗡。
patt1.compile("d");
檢索對象由“e”變?yōu)椤癲”
- test() 方法檢索字符串中的指定值善镰。返回值是 true 或 false。
-
復(fù)雜模式--正則表達式:更多的字符变汪,并可用于解析、格式檢查蚁趁、替換
RegExp 對象屬性
屬性 描述 global RegExp 對象是否具有標志 g裙盾。RegExpobjec.global返回值true或者false ignoreCase RegExp 對象是否具有標志 i。RegExpobjec.ignorance返回值true或者false lastIndex 一個整數(shù)他嫡,它聲明的是上一次匹配文本之后的第一個字符的位置番官。初始值為0 multiline RegExp 對象是否具有標志 m。RegExpobjec.multiline返回值true或者false source 正則表達式的源文本钢属。返回模式匹配所用的文本徘熔。 RegExp方法:test()、exec()淆党、compile()
正則表達式之方括號
方括號用于查找某個范圍內(nèi)的字符:
表達式 | 描述 | ||
---|---|---|---|
[abc] | 查找方括號之間的任何字符酷师。 | ||
[^abc] | 查找任何不在方括號之間的字符。 | ||
[0-9] | 查找任何從 0 至 9 的數(shù)字染乌。 | ||
[a-z] | 查找任何從小寫 a 到小寫 z 的字符山孔。 | ||
[A-Z] | 查找任何從大寫 A 到大寫 Z 的字符。 | ||
[A-z] | 查找任何從大寫 A 到小寫 z 的字符荷憋。 | ||
[adgk] | 查找給定集合內(nèi)的任何字符台颠。 | ||
[^adgk] | 查找給定集合外的任何字符。 | ||
(red | blue | green) | 查找任何指定的選項勒庄。 |
正則表達式之元字符
元字符(Metacharacter)是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
. | 查找單個字符串前,除了換行和行結(jié)束符。保證"."前后的字符完全相同即可锅铅。 |
\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$ | 匹配任何結(jié)尾為 n 的字符串。 |
^n | 匹配任何開頭為 n 的字符串锈津。 |
?=n | 匹配任何其后緊接指定字符串 n 的字符串呀酸。 |
?!n | 匹配任何其后沒有緊接指定字符串 n 的字符串。 |
支持正則表達式的 String 對象的方法
- search() 方法用于檢索字符串中指定的子字符串一姿,或檢索與正則表達式相匹配的子字符串七咧。
stringObject.search(regexp)
例如:
結(jié)果:6var str="Visit W3School!" document.write(str.search(/W3School/)) #不區(qū)分大小寫:document.write(str.search(/w3school/i))
- match():字符串內(nèi)檢索指定的值,或找到一個或多個正則表達式的匹配叮叹。
使用全局匹配的正則表達式來檢索字符串中的所有數(shù)字:
結(jié)果:1,2,3var str="1 plus 2 equal 3" document.write(str.match(/\d+/g))
- replace() 方法用于在字符串中用一些字符替換另一些字符艾栋,或替換一個與正則表達式匹配的子串。
stringObject.replace(regexp/substr,replacement)
replace() 方法詳解
沒看太懂
- split() 方法用于把一個字符串分割成字符串?dāng)?shù)組蛉顽。
stringObject.split(separator,howmany)
separator :
必需蝗砾。字符串或正則表達式,從該參數(shù)指定的地方分割 stringObject携冤。如果把空字符串 ("") 用作 separator悼粮,那么 stringObject 中的每個字符之間都會被分割。
howmany :可選曾棕。該參數(shù)可指定返回的數(shù)組的最大長度扣猫。如果設(shè)置了該參數(shù),返回的子串不會多于這個參數(shù)指定的數(shù)組翘地。如果沒有設(shè)置該參數(shù)申尤,整個字符串都會被分割,不考慮它的長度衙耕。
var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
結(jié)果:輸出:
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you