我想知道是否有一个工具可以将 JavaScript Regex 转换为 PHP。
我在 JAvascript 中得到了以下正则表达式
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
还有
pwbx2.match(/.[^!,+,§,\),\(,=,\-,\.,:,,,\w]/)
现在我不想匹配给定的值来在服务器端检查这个正则表达式。我该怎么做?
干杯
斯文
最佳答案
你需要知道 .[^!,+,§,\),\(,=,\-,\.,:,,,\w]
是一个怪物。正常的正则表达式,这将是:
.[^-.,:+=!§()\w]
[括号]
表示字符类。它们的意思是“匹配此类中的一个字符”,或者,当第一个字符为 ^
时“匹配一个不属于此类的字符”。因此,永远不需要在字符类中重复某个字符。这个有十一个逗号!
您的测试可以用这种紧凑的方式表达:
$theregex = '~.[^-.,:+=!§()\w]~';
echo (preg_match($theregex, $yourstring)) ? "**It Matches!**" : "Nah... No match." ;
但这可能不会按照您想要的方式工作
原始的正则表达式引出了一个问题:当他们写这个的时候他们在想什么?显然,写这篇文章的人都是正则表达式文盲(我并不是故意居高临下……这只是事实。)因此,他们在写这篇文章时很可能有完全不同的想法。如果是这种情况,那么无论你翻译得多么好都没有关系:它不会完成其预期的工作。
如果您知道正则表达式应该做什么,请告诉我们,我们将帮助您修复它。
关于javascript - 从 Javascript 到 PHP 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466627/