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

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

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

    何時,紗窗外,風搖翠竹

    常用鏈接

    統計

    最新評論

    • 1.?re: 慎用AJAX框架
    • AJAX是中國技術領域的紅燈區。。想爽,但又怕潛伏著危險。。。
    • --阿斯頓飛
    • 2.?re: 慎用AJAX框架
    • 評論內容較長,點擊標題查看
    • --夏如嘏
    • 3.?re: 慎用AJAX框架
    • ajax 要懂的原理,同意樓主,框架慎用
    • --驕傲
    • 4.?re: 慎用AJAX框架
    • @讀書、思考、生活
      2、bug滿天飛,那就說明是水平不到家
      您的水平能高到沒有bug?
    • --樓主
    • 5.?re: 慎用AJAX框架
    • 只要你懂xmlhttp,為什么非要用ajax呢,我從2000年開始使用xmlhttp,ajax剛出來的時候看了一眼,冷笑一聲。所以爭論沒有意義,到處都是新瓶裝老酒的故事
    • --挨踢的貨

    一條JS正則表達式效率分析及優化

    ??? 前幾天遇到一個bug,在一個填email的文本框,當用戶錄入比較長的一段文本后(比如40位以上),頁面就死掉了。檢查后發現校驗Email的是下面這樣一段javascript代碼:

    ? function checkEmail(email)
    ? {
    ??????? if (email.length == 0 )
    ??????????? return true;
    ???????? var validEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    ???????? if (validEmail.test(email))
    ???????? {
    ???????????????? return true
    ????????? }
    ?????????? return false
    ??? }

    ??? checkEmail("123456789012345678901234567890123456789012345abcdefghijkl");

    ?? 第一反應是正則表達式寫的有問題,'@'前后的 ([\.-]?\w+)* 都可能會引起效率問題。下面仔細分析一下:

    1. 從輸入的值來看, engine會首先匹配 \w+, 這是一個貪婪匹配,可以一直匹配到結尾;
    2. 然后按優先級開始匹配 ([\.-]?\w+)*中的 [\.-]?\w+,這個時候前面的 \w+ 為了后面的匹配成功,必須要重現匹配,讓出一點匹配的內容,假設先讓出的是 'l',([\.-]?\w+)*匹配成功;
    3. ([\.-]?\w+)* 意味著要盡量去匹配多次,再第二次對 [\.-]?\w+ 匹配,這個時候為了第二次匹配的成功,第一次匹配的 [\.-]?\w+ 要讓出能滿足第二次 [\.-]?\w+ 的內容,也就是它匹配到的'l',這個時候,第一次匹配的 [\.-]?\w+ 又不滿足了,\w+ 又得讓出來一個'k'。
    4. 這樣未知匹配次數的 ([\.-]?\w+)* 就形成了一個很大的循環,而在正則表達式中,每次匹配時被括號里模式匹配的東西都是要被存起來供以后使用的,大量的中間結果被緩存,最終導致IE死掉。

    ?? 所以這是一條典型的因為循環嘗試匹配導致效率低下的正則表達式, 表達式中兩個 ([\.-]?\w+)* 都可能導致解釋器的crash,在本例中不需要利用匹配的中間結果,所以解決的辦法很簡單,在括號加入一個冒號,不保存中間結果就是了。即將那個正則表達式改成如下:

    ? /^\w+(?:[\.-]?\w+)*@\w+(?:[\.-]?\w+)*(\.\w{2,3})+$/

    如果性能還是不能滿足需求,可以考慮把這個正則表達式拆成幾個小的表達式,分別進行驗證。

    posted on 2006-08-17 20:50 weidy 閱讀(1776) 評論(0)  編輯  收藏 所屬分類: WEB & AJAX

    主站蜘蛛池模板: 亚洲女初尝黑人巨高清| 精品久久洲久久久久护士免费| 亚洲中文字幕丝袜制服一区| 麻豆国产精品免费视频| 国产免费卡一卡三卡乱码 | 无码国模国产在线观看免费| 亚洲日韩AV一区二区三区四区| 国内精品免费久久影院| 日本高清免费不卡在线| 亚洲6080yy久久无码产自国产| 日本高清免费中文字幕不卡| 日本激情猛烈在线看免费观看| 亚洲中文字幕不卡无码| 免费女人高潮流视频在线观看| 亚洲欧洲日产国码久在线观看| 日韩亚洲综合精品国产| 99久久久国产精品免费无卡顿| 日本亚洲成高清一区二区三区| 国产亚洲人成在线影院| 国产偷窥女洗浴在线观看亚洲| 热99RE久久精品这里都是精品免费 | 久久久精品免费视频| 亚洲成a人无码av波多野按摩| 一个人看的hd免费视频| 亚洲国产精品无码一线岛国| 免费能直接在线观看黄的视频 | 精品久久久久久亚洲综合网| 亚洲伊人久久综合影院| 99在线免费观看视频| 亚洲熟妇AV日韩熟妇在线| 亚洲国产成人五月综合网| 一区二区三区观看免费中文视频在线播放 | 亚洲综合无码一区二区| 巨胸喷奶水视频www网免费| 又硬又粗又长又爽免费看| 亚洲男人天堂av| 亚洲?v女人的天堂在线观看| 日本一道本不卡免费 | 亚洲福利在线视频| 日本免费人成网ww555在线| 亚洲一级视频在线观看|