Javascript學(xué)習(xí)筆記(十二)--內(nèi)置對象之RegExp 對象(正則)

RegExp即正則表達式 對象用于規(guī)定在文本中檢索的內(nèi)容洁闰。

  1. 創(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í)行多行匹配捌显。
  2. RegExp的簡單模式--檢索一個單獨的字符。

    1. 定義: var patt1=new RegExp("e");
      使用該 RegExp 對象在一個字符串中檢索時总寒,將尋找的是字符 "e"扶歪。

    2. 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",并存儲其位置耍缴。
        例如:
        do{
        result=patt1.exec("The best things in life are free")
        document.write(result)
        }while(result != null)
        
        結(jié)果:eeeeeenull
      • compile() 方法用于改變 RegExp砾肺。
        compile() 既可以改變檢索模式,也可以添加或刪除第二個參數(shù)防嗡。
        patt1.compile("d");檢索對象由“e”變?yōu)椤癲”
    3. 復(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 對象的方法

  1. search() 方法用于檢索字符串中指定的子字符串一姿,或檢索與正則表達式相匹配的子字符串七咧。
    stringObject.search(regexp)
    例如:
    var str="Visit W3School!"
    document.write(str.search(/W3School/))
    #不區(qū)分大小寫:document.write(str.search(/w3school/i))
    
    結(jié)果:6
  2. match():字符串內(nèi)檢索指定的值,或找到一個或多個正則表達式的匹配叮叹。
    使用全局匹配的正則表達式來檢索字符串中的所有數(shù)字:
    var str="1 plus 2 equal 3"
    document.write(str.match(/\d+/g))
    
    結(jié)果:1,2,3
  3. replace() 方法用于在字符串中用一些字符替換另一些字符艾栋,或替換一個與正則表達式匹配的子串。
    stringObject.replace(regexp/substr,replacement)
    replace() 方法詳解

沒看太懂

  1. 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昧穿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子橙喘,更是在濱河造成了極大的恐慌时鸵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅瞎,死亡現(xiàn)場離奇詭異饰潜,居然都是意外死亡初坠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門囊拜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來某筐,“玉大人比搭,你說我怎么就攤上這事冠跷。” “怎么了身诺?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵蜜托,是天一觀的道長。 經(jīng)常有香客問我顿天,道長孝凌,這世上最難降的妖魔是什么臀栈? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蜂挪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗓化。我一直安慰自己棠涮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布刺覆。 她就那樣靜靜地躺著严肪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谦屑。 梳的紋絲不亂的頭發(fā)上驳糯,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音氢橙,去河邊找鬼酝枢。 笑死,一個胖子當(dāng)著我的面吹牛悍手,可吹牛的內(nèi)容都是我干的帘睦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼谓苟,長吁一口氣:“原來是場噩夢啊……” “哼官脓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涝焙,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤卑笨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仑撞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赤兴,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡妖滔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桶良。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片座舍。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖陨帆,靈堂內(nèi)的尸體忽然破棺而出曲秉,到底是詐尸還是另有隱情,我是刑警寧澤疲牵,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布承二,位于F島的核電站,受9級特大地震影響纲爸,放射性物質(zhì)發(fā)生泄漏亥鸠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一识啦、第九天 我趴在偏房一處隱蔽的房頂上張望负蚊。 院中可真熱鬧,春花似錦颓哮、人聲如沸家妆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揩徊。三九已至,卻和暖如春嵌赠,著一層夾襖步出監(jiān)牢的瞬間塑荒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工姜挺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留齿税,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓炊豪,卻偏偏與公主長得像凌箕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子词渤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容