我试图理解用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?
答案 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次或更多次。