我知道這個問題已經被問了十幾次,但是這一次從技術上來說不是欺騙(檢查別人,如果你喜歡);)轉換的Javascript正則表達式PHP
基本上,我有一個JavaScript正則表達式是檢查用於前端驗證的電子郵件地址,如果前端驗證無法正常運行(例如,瀏覽器問題),則使用CodeIgniter對後端進行雙重檢查。這是一個很長的正則表達式,我不知道從哪裏開始手動轉換它。
我幾乎找那個JS正則表達式轉換爲PHP的工具正則表達式 - 我還沒有發現一個在任何回答類似的問題(當然,這可能是這樣的工具沒有的)好吧,我騙了 - one of them建議一個花費39.95美元的工具,但我真的不想花那麼多錢來轉換單個表達式(並且不,沒有免費的試用版, 。上述問題)
這裏的JavaScript表達式,graciously provided by aSeptik:
/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i
而且通過笨,我不希望使用,因爲它不遵循相同的規則(禁止一些有效地址)所使用的一個:
/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix
我想用設置相同的規則由PHP中的Javascript正則表達式。
有這種不一致的地方,我的前端代碼說電子郵件地址是好的,然後Codeigniter說它不是,當然是我試圖修復我的應用程序中的行爲。
感謝您的任何和所有提示! :D
是不是Perl的'x'標誌? – 2012-08-15 17:59:37
@LarryBattle它可能是,但使用它的CodeIgniter文件是'.php'文件,完整的行是這樣的:'return(!preg_match(「/ ^([a-z0-9 \ + _ \ - ]] +)(\。[a-z0-9 \ + _ \ - ] +)* @([a-z0-9 \ - ] + \。)+ [az] {2,6} $/ix「,$地址)) ? FALSE:TRUE;' – 2012-08-15 18:01:05
試試這個解決方案。 http://stackoverflow.com/questions/2514810/php-email-validation-question – 2012-08-15 18:04:21