【问题标题】:How do I use PHP's preg_match to validate strings?如何使用 PHP 的 preg_match 来验证字符串?
【发布时间】:2009-06-22 22:34:25
【问题描述】:

请告诉我如何在PHP的preg_match函数中使用各种用于表达式匹配的符号。

除基本信息外,请举例检查有效的电子邮件地址和不应包含 / : 的字符串; { } * &

【问题讨论】:

    标签: php regex validation preg-match


    【解决方案1】:

    简单示例.. 验证 $var 是一个字符串,用于验证和检查 (a to z AND A to Z) 字符。

    <?php
    $var = 'hello';
    if (ereg("[a-zA-Z]", $var)) {
      echo 'it was typed correctly';
    } else {
      echo 'it was not typed correctly';
    }
    ?>
    

    更多正则表达式语法示例:http://www.regexlib.com/

    编辑:

    if (ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email)) {
    
      echo 'email ok';
    
    } else {
    
      echo 'email not ok';
    
    }
    

    问候。

    【讨论】:

    • 我建议使用正则表达式(regex)进行字符串/电子邮件验证。(Php 中的 ereg)这个例子我用了 2 年。永远不要让我失望。当然有一个较小的正则表达式。但我喜欢保留那些我知道它很好用的表达式。
    • 任何刚开始在 PHP 中使用正则表达式的人都应该使用 preg 套件,而不是 ereg。 preg 基于 PCRE 库,它是现有的最强大、功能最丰富的风格之一。 ereg,基于 POSIX 标准,使用不同的语法并且功能更弱;它实际上只是出于历史原因而受到支持。
    • 来自 ereg 上的 PHP 手册页。 (php.net/manual/en/function.ereg.php) "警告自 PHP 5.3.0 起,此功能已被弃用。强烈建议不要依赖此功能。"
    【解决方案2】:

    Jeff Atwood 最近在他的coding horror blog 上有一篇关于正则表达式的文章。查看“Regular Expressions for Regular Programmers”。

    【讨论】:

    • 不错的文章我必须说很搞笑
    【解决方案3】:

    要检查有效的邮件,您可以使用内置功能 (filter_var()/FILTER_VALIDATE_EMAIL) 或使用符合当前 RFC 的 nice ready to use 库。 PHP : Parsing Email Adresses in PHP。有关preg_match() 的示例,您可以访问 php 网站,Wikipedia 上提供了完整的正则表达式选项列表。要了解正则表达式,我推荐“The Regex Coach”。

    【讨论】:

      【解决方案4】:

      我知道这个问题是关于 PHP 的,但我的目的是说明电子邮件地址验证的复杂性:要检查电子邮件地址是否符合 RFC 2822,您可以使用 Perl 模块 Email::Address。请查看该模块的源代码以及 RFC。

      【讨论】:

        【解决方案5】:

        如果我给 $var = 'hello87%^$' 也返回“输入正确”;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-13
          • 2015-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多