<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    BloveSaga

    在希臘帕爾納斯山南坡上,有一個(gè)馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個(gè)大字: 認(rèn)識你自己!

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      34 隨筆 :: 12 文章 :: 122 評論 :: 0 Trackbacks

    ?? 正則表達(dá)式

    ?.正則表達(dá)式及其作用
    ?.RegExp對象
    ?.String對象中與正則表達(dá)式有關(guān)的方法
    ?.正則表達(dá)式的語法參考
    ?.實(shí)用程序舉例

    ?什么是正則表達(dá)式?
    ?.文件路徑通配符
    ?"?"通配符匹配文件名中的單個(gè)字符,而"'"通配符匹配零個(gè)或多個(gè)字符。data?.dat就是一中文
    ?本模式,它能匹配data1.dat,data2.dat,datax.dat,dataN.dat等文件名。data*.dat是另一種文
    ?本模式,它匹配data.dat,data1.dat,data2.dat,data12.dat,datax.dat等文件名。

    ?

    ?.正則表達(dá)式
    ?是由英文詞語regular expression翻譯過來的,英文比中文更能實(shí)現(xiàn)其含義,就是符合某種規(guī)則
    ?的表達(dá)式。可以將正則表達(dá)式理解為一種對文件進(jìn)行模糊匹配的語言,它用一些特殊的符號(稱
    ?為元字符)來代表某種特征(例如,全都是數(shù)字)的一組字符以及指定匹配的次數(shù),含有元字符
    ?的文本不再表示某一具體的文本內(nèi)容,而是形成了一種文本模式,它可以匹配符合這種模式的所
    ?有文本串。
    ?
    ?元字符與子匹配
    ?.元字符
    ?如果一個(gè)圖書的編號格式是:要么是5個(gè)數(shù)字字符,例如,10101;要么是5個(gè)數(shù)字后加上一個(gè)連字號
    ?(-),再加上4個(gè)數(shù)字組成的10個(gè)字符,例如,11111-1234。那么,要在一個(gè)大的文本串中查找這
    ?兩種格式的圖書編號時(shí),就可以用\d{5}(-\d{4})?做為匹配模式。
    ?如果要讓abc?中的bc同時(shí)受到?的作用,必須使用圓括號將他們括起來,使它們成為一個(gè)緊密結(jié)合
    ?的組合項(xiàng),這樣后面的?就表示圓括號中的內(nèi)容可有可無,例如,a(bc)?能匹配a和abc。

    ?.字匹配
    ?圓口號所括起來的部分為一個(gè)子匹配(也叫子表達(dá)式),除了可以得到整個(gè)正則表達(dá)式的匹配
    ?結(jié)果外,還可以單獨(dú)得到每個(gè)子表達(dá)式部分所匹配的結(jié)果。
    ?多個(gè)子表達(dá)式所匹配的原始內(nèi)容按照它們正則表達(dá)式模式中從左到右出現(xiàn)的順序存儲在緩沖區(qū)中
    ?,這種過程稱為捕獲。圓括號中的子匹配所捕獲的內(nèi)容可在整個(gè)表達(dá)式中位于這個(gè)括號之后的
    ?地方被反引用,第一括號(即第一個(gè)子匹配)捕獲的內(nèi)容用\1表示,第二個(gè)圓括號(即第二個(gè)子
    ?匹配)捕獲的內(nèi)容\2表示,依次類推。例如,要匹配2個(gè)相同的連續(xù)字符的正則表達(dá)式為(\d)\1.
    ?要匹配連續(xù)5個(gè)相同的數(shù)字字符的正則表達(dá)式為(\d)\1{4}.要匹配1221.3553.6776等數(shù)字。可以
    ?使用正則表達(dá)式為(\d)(\d)\2\1。

    ? 正則表達(dá)式的作用
    ?.測試字符串是否匹配某個(gè)模式,從而實(shí)現(xiàn)數(shù)據(jù)格式的有效性驗(yàn)證。
    ?.將一段文本中滿足某一正則表達(dá)式模式的文本內(nèi)容替換為別的內(nèi)容或刪除(即替換為空字符串)
    ? 例如,將一大段文本中的所有的19xx年的內(nèi)容替換為20xx年,其中xx部分是兩個(gè)任意的數(shù)字,
    ? 不會被替換,但不能簡單地用20替換19,否則1919就被替換為2020。
    ?.在一段文本中搜索具有某一類型特征的文本內(nèi)容。精確搜索和正則表達(dá)式的模式搜索最大的區(qū)
    ? 別就是:精確搜索是搜索一個(gè)具體的文本,而模式搜索是模式搜索具有某一類型特征的文本。

    ?
    ? RegExp對象
    ?JavaScript中提供了一個(gè)名為RegExp的對象來完成有關(guān)正則表達(dá)式的操作和功能,每一條正則
    ?表達(dá)式模式對應(yīng)一個(gè)RegExp對象實(shí)例。

    ?創(chuàng)建RegExp對象實(shí)例
    ?(1)使用RegExp對象的顯示構(gòu)造函數(shù),語法為:new RegExp("pattern"[,"flags"]);
    ?(2)使用RegExp對象的隱式構(gòu)造函數(shù),采用純粹的文本格式:/pattern/[flags]
    ?
    ?flags標(biāo)志字符:
    ???? -g 用做全局標(biāo)志
    ???? -i 用做忽略大小寫標(biāo)志
    ???? -m 用做多行標(biāo)志
    ???? 如果沒有設(shè)置這個(gè)標(biāo)志,那么元字符"^"只與整個(gè)被搜索字符串的開始位置相匹配,而元字符
    ???? "$"只與整個(gè)被搜索字符串的結(jié)束位置相匹配。如果設(shè)置了這個(gè)標(biāo)志,那么"^"還可以與被
    ???? 搜索字符串中的"\n"或"\r"之后的位置相匹配。
    ? 注意:
    ? 當(dāng)使用構(gòu)造函數(shù)的方式創(chuàng)建RegExp實(shí)例對象的時(shí)候,應(yīng)將原始的正則表達(dá)式模式文本中的每個(gè)
    ? "\"都使用"\\"來替換,例如,下面的語句等價(jià):
    ?? var re=new RegExp("\\d{5}");
    ?? var re=^d{5}/

    ?RegExp對象-屬性
    ?.所有RegExp對象實(shí)例共享靜態(tài)屬性
    ?.單個(gè)對象實(shí)例的屬性
    ?靜態(tài)屬性:
    ?.index
    ?.input
    ?.lastIndex
    ?.lastMatch
    ?.lastParen
    ?.lastContext
    ?.leftContext
    ?.rightContext
    ?.$1...$9

    ?對象實(shí)例屬性:
    ?.global
    ?.ignoreCase
    ?.multiline
    ?.source

    ?RegExp對象-方法
    ?.test方法
    ?語法格式為:test(str)。檢查一個(gè)字符串中是否存在創(chuàng)建RegExp對象實(shí)例所指定的正則表達(dá)式模式
    ?.exec方法
    ?語法格式為:exec(str)。使用創(chuàng)建RegExp對象實(shí)例時(shí)所指定的正則表達(dá)式模式對一個(gè)字符串執(zhí)行
    ?搜索,并返回一個(gè)包含搜索結(jié)果的數(shù)組。
    ?.compile方法
    ?語法格式為:compile("pattern"[,"flags"])。更換RegExp對象實(shí)例所使用的正則表達(dá)式模式,并
    ?將新的正則表達(dá)式模式編譯為內(nèi)部格式,從而使以后的匹配過程執(zhí)行更快。

    ?RegExp對象-綜合舉例
    ?code:
    <script language="javascript">
    ??? var strSrc="xxa1b01c001yya2b02c002zz";
    ??? var re="/a(\d)b(\d{2})c(\d{3})/gi";
    ??? var arr,count=0;
    ??? while((arr = re.exec(strSrc))!=null)
    ??? {
    ?????? displayResult();
    ??? }
    ??? function displayResult()
    ??? {
    ????? document.write(<p>這是用正則表達(dá)式/"+re.source+"/gi對字符串<br>\""
    ???????????????? +RegExp.input+ "\"進(jìn)行第" +(++count)+ "次搜索的結(jié)果:<br>");
    ????? document.write("RegExp.index為"+RegExp.index+"<br>");
    ????? document.write("RegExp.lastindex為"+RegExp.lastindex+"<br>");
    ????? document.write("RegExp.lastMatch為"+RegExp.lastMatch+"<br>");
    ????? document.write("RegExp.lastParen為"+RegExp.lastParen+"<br>");
    ????? document.write("RegExp.lastContext為"+RegExp.lastContext+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$1+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$2+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$3+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$4+"<br>");
    ????? document.write("arr.index為"+arr.index+"<br>");
    ????? document.write("arr.input為"+arr.input+"<br>");
    ????? document.write("arr.lastindex為"+arr.lastindex+"<br>");
    ????? document.write("返回的元素個(gè)數(shù)為"+arr.length+"<br>");
    ????? document.write("返回?cái)?shù)組的類容為[");
    ????? for(var i=0;i<arr.length;i++)
    ????? {
    ???????? if(arr.length-1)
    ??????????? document.write("\""+arr[i]+"\",");
    ???????? else
    ??????????? document.write("\""+arr[i]+"\"]</p>");
    ????? }
    ?????
    ??? }
    ?</script>
    ?


    ?String對象中與正則表達(dá)式有關(guān)的方法
    ?.match方法
    ?語法格式為:match(Exp)。與RegExp對象的exec方法類似,它使用正則表達(dá)式模式對字符串執(zhí)行
    ?搜索,并返回一個(gè)包含搜索結(jié)果的數(shù)組。
    ?<script language="javascript">
    ?? var strSrc="xxa1b01c001yya2b02c002zz";
    ?? var re=/a(\d)b(\d(2))c(\d{3})/gi;
    ?? var arr;
    ?? arr=strSrc.match(re);
    ?? for(var i=0;i<arr.length;i++)
    ?? {
    ????? if(i<arr.length-1)
    ???????? document.write("[\""+arr[i]+"\",");
    ????? else
    ???????? document.write("\""+arr[i]+"\"]");
    ?? }
    ?</script>
    ?
    ?.search方法
    ?語法格式為:serach(rgExp)。返回使用正則表達(dá)式搜索時(shí),第一個(gè)匹配的字符串在整個(gè)被搜索
    ?的字符串中的位置。
    ?.replace方法
    ?語法格式為: replace(rgExp,replaceText)。使用正則表達(dá)式模式對字符串執(zhí)行搜索,并對搜索
    ?到的內(nèi)容用指定的字符串替換,返回值包含替換后的內(nèi)容的字符串對象。

    posted on 2006-06-15 18:06 藍(lán)色Saga 閱讀(216) 評論(0)  編輯  收藏 所屬分類: Java Scripting Study
    主站蜘蛛池模板: 97国产在线公开免费观看| 亚洲综合色婷婷在线观看| 国产精品无码一区二区三区免费| 亚洲天堂一区二区三区| 婷婷亚洲综合五月天小说| 精品国产免费观看| 成**人免费一级毛片| 成人毛片视频免费网站观看| 香蕉97超级碰碰碰免费公| 日本片免费观看一区二区| 日韩欧毛片免费视频| 亚洲伦乱亚洲h视频| 成人亚洲网站www在线观看| 亚洲第一区在线观看| 国产亚洲精品看片在线观看| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲女同成av人片在线观看| 337p日本欧洲亚洲大胆裸体艺术| 亚洲免费网站观看视频| 国产色爽免费视频| 亚洲毛片在线观看| 亚洲精品国产电影午夜| 精品亚洲成A人无码成A在线观看| 亚洲尤码不卡AV麻豆| 亚洲AV日韩综合一区尤物| 国产亚洲综合视频| 羞羞网站在线免费观看| 日本高清免费中文在线看| 中国一级特黄的片子免费| 和老外3p爽粗大免费视频 | 亚洲香蕉在线观看| 涩涩色中文综合亚洲| 免费黄色电影在线观看| 免费看又黄又无码的网站| 午夜国产精品免费观看| 国产亚洲成av片在线观看| 亚洲成人福利在线观看| 国产做国产爱免费视频| 91在线视频免费看| 亚洲AV天天做在线观看| 亚洲黄片手机免费观看|