【发布时间】:2012-08-12 01:18:27
【问题描述】:
我知道这个问题已经被问了十几次了,但从技术上讲,这个问题并不是一个骗子(如果你愿意,请检查其他问题);)
基本上,我有一个 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
还有 CodeIgniter 使用的那个,我不想使用它,因为它不遵循相同的规则(不允许某些有效地址):
/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix
我想在 PHP 中使用 Javascript 正则表达式设置的相同规则。
在我的前端代码说电子邮件地址正常,然后 Codeigniter 说不是,这种不一致当然是我试图在我的应用程序中修复的行为。
感谢您提供的所有提示! :D
【问题讨论】:
-
@LarryBattle 可能是,但是使用它的 CodeIgniter 文件是
.php文件,整行是这样的:return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $address)) ? FALSE : TRUE; -
试试这个解决方案。 stackoverflow.com/questions/2514810/…
-
有一个工具可以做到这一点:RegexBuddy 可以将正则表达式从/到几乎任何相关的风格。
-
@TimPietzcker 对,但正如问题中所提到的,RegexBuddy 的成本为 40 美元,我很难证明花费这笔钱来转换一个正则表达式......
标签: php javascript regex