formvalidtor在thinkphp中的Regex書寫的問題??大家幫忙

來源:互聯網
上載者:User
使用formValidator-4.1.3.js進行email格式check。
書寫方式如下。

$("#email").formValidator({onShow:"請輸入郵箱",onFocus:"郵箱6-100個字元,輸入正確了才能離開焦點",onCorrect:"恭喜你,你輸對了",defaultValue:"@"}).inputValidator({min:6,max:100,onError:"你輸入的郵箱長度非法,請確認"}).regexValidator({regExp:"^([ \\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$",onError:"你輸入的郵箱格式不正確"});


在靜態網頁中測試正常。但是在thinkphp的模板檔案中,經過解析後的代碼變成了
regExp:"^([ \w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"

導致formValidator報字“符集越界”的問題。

為什麼運算式被更改了。\\w變成了\w?
請大家幫忙確認!


回複討論(解決方案)

模板檔案會被讀取到變數中,所以 \\w 變成了 \w
要寫作 \\\w 或 \\\\w

謝謝回複。按照上述修改後ok了。
還有一點疑問。

regExp:"^([ \\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([ \\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"

運算式中有兩個 \\w,為什麼只有前面前面的 \\w被轉換成了 \w,後面的\\w可以不變的?

這就不清楚了,需要看 php 的 C 原始碼才能分析原因
不過這不是什麼人都可以做到的
實際使用中也不必深究,遇到加一個“\”不行時就再加一個,如此迴圈知道不出錯

你可以看到國外的不少代碼中會有連續四五個 \ 的

可能thinkphp在模板解析時,只對字串中的第一個\\進行變換,後面的都當作字串處理了。
謝謝了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.