我正在尝试创建3个PHP正则表达式,它们可以做三件事。
我有大量的文字,想要从中提取这些东西。
到目前为止我所拥有的是:
$regexp = '/[A-Za-z0-9\.]+[@]{1}[A-Za-z0-9\.]+[A-Za-z]{2,4}/i';
preg_match_all($regexp, $output, $email);
$regexp = '/[A-Za-z0-9\.]+[^@]{1}/i';
preg_match_all($regexp, $output, $nameservers);
$regexp = '/[0-9]{2,4}[-\/]{1}([A-Za-z]{3}|[0-9]{2})[-\/]{1}[0-9]{2,4}/i';
preg_match_all($regexp, $output, $dates);
日期和电子邮件有效,但我不知道这是否是一种有效的方式..
名字服务员根本不工作..基本上我想找到字母和数字的任意组合,其间有点而不是@符号..
非常感谢任何帮助。
由于
答案 0 :(得分:2)
电子邮件的RegEx相当复杂。这是一个框架闪耀的地方。大多数流行的都有验证组件,您可以使用它们来解决这些问题。我最熟悉ZendFramework validation,Symfony2和CakePHP也提供了很好的解决方案。这些解决方案通常都写入适当的RFC规范,并包含对程序员经常忽略的事情的支持,例如+
在电子邮件地址中有效的事实。它们还可以防止程序员犯下的常见错误。目前,您的电子邮件正则表达式将允许使用如下所示的电子邮件地址:.@.qt
,该邮件地址无效。
有些人可能会争辩说,使用框架来验证电子邮件或主机名(也可能包含-
)是过度的。我觉得这很值得。
答案 1 :(得分:0)
对于名称服务器,我建议使用:/[^.](\.[a-z_\d]+){3,}/i
答案 2 :(得分:0)
基本上我想找到任何字母和数字的组合 它们之间有点而不是@符号..
regexp用于查找中间有点的所有字母和数字:
$regexp '/[A-Za-z0-9]{1,}(\.[A-Za-z0-9]{1,}){1,}/i'
请注意,如果您所匹配的内容不包含@,则您不必明确表示您不想要“@”。
答案 3 :(得分:0)
我建议您为示例使用不同的模式:
[\w\.-]+@\w+\.[a-zA-Z]{2,4}
发送电子邮件。\d{1,2}[/-][\da-zA-Z]{1,3}[/-]\d{2,4}
约会。([a-zA-Z\d]+\.){2,3}[a-zA-Z\d]+
用于命名空间。