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

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

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

    何時(shí),紗窗外,風(fēng)搖翠竹

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

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

    一條JS正則表達(dá)式效率分析及優(yōu)化

    ??? 前幾天遇到一個(gè)bug,在一個(gè)填email的文本框,當(dāng)用戶錄入比較長的一段文本后(比如40位以上),頁面就死掉了。檢查后發(fā)現(xiàn)校驗(yàn)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");

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

    1. 從輸入的值來看, engine會(huì)首先匹配 \w+, 這是一個(gè)貪婪匹配,可以一直匹配到結(jié)尾;
    2. 然后按優(yōu)先級(jí)開始匹配 ([\.-]?\w+)*中的 [\.-]?\w+,這個(gè)時(shí)候前面的 \w+ 為了后面的匹配成功,必須要重現(xiàn)匹配,讓出一點(diǎn)匹配的內(nèi)容,假設(shè)先讓出的是 'l',([\.-]?\w+)*匹配成功;
    3. ([\.-]?\w+)* 意味著要盡量去匹配多次,再第二次對 [\.-]?\w+ 匹配,這個(gè)時(shí)候?yàn)榱说诙纹ヅ涞某晒Γ谝淮纹ヅ涞?[\.-]?\w+ 要讓出能滿足第二次 [\.-]?\w+ 的內(nèi)容,也就是它匹配到的'l',這個(gè)時(shí)候,第一次匹配的 [\.-]?\w+ 又不滿足了,\w+ 又得讓出來一個(gè)'k'。
    4. 這樣未知匹配次數(shù)的 ([\.-]?\w+)* 就形成了一個(gè)很大的循環(huán),而在正則表達(dá)式中,每次匹配時(shí)被括號(hào)里模式匹配的東西都是要被存起來供以后使用的,大量的中間結(jié)果被緩存,最終導(dǎo)致IE死掉。

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

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

    如果性能還是不能滿足需求,可以考慮把這個(gè)正則表達(dá)式拆成幾個(gè)小的表達(dá)式,分別進(jìn)行驗(yàn)證。

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

    主站蜘蛛池模板: 亚洲AV无码成人网站久久精品大 | 一级特黄录像视频免费| 成年大片免费视频| 亚洲免费一级视频| 1000部拍拍拍18勿入免费凤凰福利| 久久精品亚洲日本佐佐木明希| 叮咚影视在线观看免费完整版| 亚洲精品国产字幕久久不卡| 毛片在线全部免费观看| 久久亚洲日韩精品一区二区三区| 99免费在线观看视频| 亚洲高清日韩精品第一区| 国产免费不卡v片在线观看| 国产人成亚洲第一网站在线播放| 成人免费在线观看网站| 污网站在线观看免费| 亚洲伊人久久精品影院| 你好老叔电影观看免费| 亚洲国产高清美女在线观看| 天天拍拍天天爽免费视频| 无码毛片一区二区三区视频免费播放| 狠狠亚洲狠狠欧洲2019| 人妻无码久久一区二区三区免费 | 国产在线精品一区免费香蕉| 久久夜色精品国产亚洲AV动态图| 5g影院5g天天爽永久免费影院 | 久久亚洲国产午夜精品理论片| 国产色爽免费视频| 思思久久99热免费精品6| 亚洲Av综合色区无码专区桃色 | 亚洲乱妇熟女爽到高潮的片| 亚洲日韩在线观看免费视频| 久久99精品视免费看| 亚洲国产综合精品中文第一| 亚洲情侣偷拍精品| 97视频免费观看2区| 美女露100%胸无遮挡免费观看| 国产亚洲AV夜间福利香蕉149| 亚洲免费福利在线视频| 久久精品国产亚洲AV无码偷窥| 国产精品成人免费视频网站京东 |