试图用php理解处理正则表达式

时间:2011-05-13 05:30:15

标签: php regex

我试图理解用php处理正则表达式。到目前为止我的代码是:
PHP代码:

$string = "This is a 1 2 3 test.";

$pattern  = '/^[a-zA-Z0-9\. ]$/';
$match = preg_match($pattern, $string);

echo "string: " . $string . " regex response: " , $match; 

为什么$ match总是返回0,我认为它应该返回1?

3 个答案:

答案 0 :(得分:7)

[a-zA-Z0-9\. ]表示一个字母,它是字母数字或“。”或“”。您将需要重复此模式:

$pattern  = '/^[a-zA-Z0-9. ]+$/';
                            ^
                      "one or more"

注意:您不需要在字符组中转义.

答案 1 :(得分:3)

这就是你所说的模式:

  • '/:启动表达式
  • ^:字符串的开头
  • [a-zA-Z0-9\. ]:任何一个字母数字字符,句点或空格(您实际上应该使用\s作为空格如果您的意图是匹配任何空白字符)。
  • $:字符串结尾
  • /':结束表达

因此,产生匹配结果的字符串示例是:

$string = 'a'

另外请注意,如果您实际上是想从结果中获取匹配项,那么您将需要使用preg_match的第三个参数:

$numResults = preg_match($pattern, $string, $matches);

答案 2 :(得分:2)

您需要在角色类的末尾使用量词,例如+,这意味着匹配1次或更多次

Ideone