多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 精通正則表達式(2)

精通正則表達式(2)

來源:程序員人生   發布時間:2015-03-28 08:56:27 閱讀次數:3285次

正則表達式還有另外一種正則表達式字面量的聲明方式

正則表達式語法參考

var=/a/gi 兩個/線分隔是模式,最后g表示全局,i表示字母不辨別大小

正則表達式對象的方法:

  • test,返回1個 Boolean 值,它指出在被查找的字符串中是不是存在模式。如果存在則返回 true,否則就返回 false。
  • exec,用正則表達式模式在字符串中運行查找,并返回并含該查找結果的1個數組。
  • compile,把正則表達式編譯為內部格式,從而履行得更快。

正則表達式對象的屬性

  • source,返回正則表達式模式的文本的復本。只讀。
  • lastIndex,返回字符位置,它是被查找字符串中下1次成功匹配的開始位置。
  • $1…$9,返回9個在模式匹配期間找到的、最近保存的部份。只讀。
  • input ($_),返回履行規范表述查找的字符串。只讀。
  • lastMatch ($&),返回任何正則表達式搜索進程中的最后匹配的字符。只讀。
  • lastParen ($+),如果有的話,返回任何正則表達式查找進程中最后括的子匹配。只讀。
  • leftContext ($`),返回被查找的字符串中從字符串開始位置到最后匹配之前的位置之間的字符。只讀。
  • rightContext ($’),返回被搜索的字符串中從最后1個匹配位置開始到字符串結尾之間的字符。只讀。

String對象1些和正則表達式相干的方法

  • match,找到1個或多個正則表達式的匹配。
  • replace,替換與正則表達式匹配的子串。
  • search,檢索與正則表達式相匹配的值。
  • split,把字符串分割為字符串數組。

下面舉實例來講明如何利用


re = /s/;// s匹配任何空白字符,包括空格、制表符、換頁符等等 str= "user Name";//用戶名包括空格 alert(re.test(str));//true str = "user Name";//用戶名包括制表符 alert(re.test(str));//true re = /^[a-z]+.$/i; //^表示開始 $表示字符結束位置 alert(re.test("hi111tt"));//false alert(re.test("h.")); //true var re = /^[a-z]+s+d+$/i; //+號表示字符最少要出現1次,s表示空白字符,d表示1個數字 alert(re.test("abc 11222")); //true alert(re.test("abc 11222abc")); //fals //當時我們想取出里面的數字 re = /d+/ var result = re.exec(str); alert(result); //11222 //更復雜的用法,使用子匹配 //exec返回的數組第1到n元素中包括的是匹配中出現的任意1個子匹配 re=/^[a-z]+s+(d+)$/i;//用()來創建子匹配 arr =re.exec(osVersion); alert(arr[0]);//全部osVersion,也就是正則表達式的完全匹配 alert(arr[1]);//8,第1個子匹配,事實也能夠這樣取出主版本號 alert(arr.length);//2 osVersion = "Ubuntu 8.10";//取出主版本號和次版本號 re = /^[a-z]+s+(d+).(d+)$/i;//.是正則表達式元字符之1,若要用它的字面意義須轉義 arr = re.exec(osVersion); alert(arr[0]);//完全的osVersion alert(arr[1]);//8 alert(arr[2]);//10
//String對象的1些和正則表達式有關的方法 //replace方法,用于替換字符串 var str ="some money"; alert(str.replace("some","much"));//much money //replace的第1個參數可以為正則表達式 var re = /s/;//空白字符 alert(str.replace(re,"%"));//some%money //在不知道字符串中有多少空白字符時,正則表達式極其方便 str ="some some some f"; re = /s+/; alert(str.replace(re,"#"));//但是這樣只會將第1次出現的1堆空白字符替換掉 //由于1個正則表達式只能進行1次匹配,s+匹配了第1個空格后就退出了 re = /s+/g; //g,全局標志,將使正則表達式匹配全部字符串 alert(str.replace(re,"@"));//some@some@some@ //另外一個與之類似的是split,以某個字符分隔 var str = "a-bd-c"; var arr = str.split("-");//返回["a","bd","c"] str = "a_db-c";//用戶以他喜歡的方式加分隔符s re=/[^a-z]/i;//前面我們說^表示字符開始,但在[]里它表示1個非字符集 //匹配任何不在指定范圍內的任意字符,這里將匹配除字母處的所有字符 arr = str.split(re);//仍返回["a","bd","c"]; //在字符串中查找時我們經常使用indexOf,與之對利用于正則查找的方法是search,找不到返回⑴ str = "My age is 18.Golden age!";//年齡不是1定的,我們用indexOf不能查找它的位置 re = /d+/; alert(str.search(re));//返回查找到的字符串開始下標10 //注意,由于查找本身就是出現第1次就立即返回,所以無需在search時使用g標志 //下面的代碼雖然不出錯,但g標志是過剩的 re=/d+/g; alert(str.search(re));//依然是10 var str = "My name is Chenfei.Hello everyone!"; var re = /[A-Z]/;//匹配所有大寫字母 var arr = str.match(re);//返回數組 alert(arr);//數組中只會包括1個M,由于我們沒有使用全局匹配 re = /[A-Z]/g; arr = str.match(re); alert(arr);//M,C,J,H //從字符串中抽取單詞 re = /[a-z]*/gi;//表示單詞邊界 *表示0個或多個 str = "one two three four"; alert(str.match(re));//one,two,three,four //RegExp對象的靜態屬性 //input 最后用于匹配的字符串(傳遞給test,exec方法的字符串) var re = /[A-Z]/; var str = "Hello,World!!!"; var arr = re.exec(str); alert(RegExp.input);//Hello,World!!! re.exec("tempstr"); alert(RegExp.input);//依然是Hello,World!!!,由于tempstr不匹配 //lastMatch 最后匹配的字符 re = /[a-z]/g; str = "hi"; re.test(str); alert(RegExp.lastMatch);//h re.test(str); alert(RegExp["$&"]);//i ,$&是lastMatch的短名字,但由于它不是合法變量名,所以要。。 //lastParen 最后匹配的分組 re = /[a-z](d+)/gi; str = "Class1 Class2 Class3"; re.test(str); alert(RegExp.lastParen);//1 re.test(str); alert(RegExp["$+"]);//2 //leftContext 返回被查找的字符串中從字符串開始位置到最后匹配之前的位置之間的字符 //rigthContext 返回被搜索的字符串中從最后1個匹配位置開始到字符串結尾之間的字符 re = /[A-Z]/g; str = "123ABC456"; re.test(str); alert(RegExp.leftContext);//123 alert(RegExp.rightContext);//BC456 re.test(str); alert(RegExp["$`"]);//123A alert(RegExp["$'"]);//C456 re = /[A-Z]+/g; str = "123ABC456"; re.test(str); alert(RegExp.leftContext);//123 alert(RegExp.rightContext);//456 //使用元字符注意事項:元字符是正則表達式的1部份,當我們要匹配正則表達式本身時,//必須對這些元字符轉義.下面是正則表達式用到的所有元字符 ( [ { ^ $ | ) ? * + . var str = "?"; var re = /?/; alert(re.test(str));//出錯,由于?是元字符,必須轉義 re = /?/; alert(re.test(str));//true 下面是正則表達式中的預定義類 代碼 同等于 匹配 . IE下[^ ],其它[^ ] 匹配除換行符以外的任何1個字符 d [0-9] 匹配數字 D [^0-9] 匹配非數字字符 s [ fx0B] 匹配1個空白字符 S [^ fx0B] 匹配1個非空白字符 w [a-zA-Z0-9_] 匹配字母數字和下劃線 W [^a-zA-Z0-9_] 匹配除字母數字下劃線以外的字符

量詞(下表量詞單個出現時皆是貪婪量詞)

  • * 匹配前面的子表達式零次或屢次。例如,zo* 能匹配 “z” 和 “zoo”。 * 等價于{0,},表示可以有0個或多個o。

  • + 匹配前面的子表達式1次或屢次。例如,’zo+’ 能匹配 “zo” 和 “zoo”,但不能匹配 “z”。+ 等價于 {1,}。

  • ? 匹配前面的子表達式零次或1次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等價于 {0,1}。

  • {n} n 是1個非負整數。匹配肯定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的兩個 o。

  • {n, } n 是1個非負整數。最少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等價于 ‘o+’。’o{0,}’ 則等價于 ‘o*’。

  • {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, “o{1,3}” 將匹配 “fooooood” 中的前3個 o。’o{0,1}’ 等價于 ‘o?’。請注意在逗號和兩個數之間不能有空格。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 天堂在线免费 | 亚洲精品高清国产麻豆专区 | 亚洲成人观看 | 高清欧美一级在线观看 | 亚洲精品久久久久久下一站 | 色噜噜狠狠先锋影音久久 | 亚洲精品色综合久久久 | 白浆都出来了视频国产精品 | 欧美成人h版影院在线播放 欧美成人h版在线观看 | 成 人 a v黄 色 | 亚洲国语 | 亚州视频一区 | 亚洲视频456 | 成人国产欧美精品一区二区 | 欧美激情精品久久久久久久 | 国产jizzjizz免费看麻豆 | 欧美一级欧美一级高清 | 成人中文字幕在线 | 午夜在线免费观看 | 精品国产乱码一区二区三区 | 成人免费一区二区三区 | 欧美激情第二页 | 亚洲精品免费网站 | а中文在线天堂 | 日本成人高清视频 | 波多野结衣一区二区三区88 | 亚洲v视频 | 欧美成a| 国产精品99r8免费视频2022 | www.逼逼| 亚洲国产综合精品中文第一区 | 伊人久久99 | 国产欧美成人免费观看 | 污影院| 欧美另类精品一区二区三区 | 久久中文字幕综合不卡一二区 | 视频一区 中文字幕 | 亚洲欧美日本人成在线观看 | 久久精品一品道久久精品9 久久精品一区二区 | 少妇下面好紧好多水真爽播放 | 精品日韩 |