试图理解用php处理正则表达式
我试图理解用php处理正则表达式的意义。到目前为止,我的代码是:试图理解用php处理正则表达式,php,regex,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 字符类末尾需要一个量词,例
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 字符类末尾需要一个量词,例如
+
,这意味着匹配1次或多次
.
[a-zA-Z0-9\.]
表示一个字母数字或“.”或“.”字符。您将要重复此模式:
$pattern = '/^[a-zA-Z0-9. ]+$/';
^
"one or more"
注意:您不需要在字符组内转义。以下是您的意思:
:启动表达式”/
:字符串的开头^
:任何一个字母数字字符、句点或空格(如果您想匹配任何空格字符,实际上应该使用[a-zA-Z0-9\.]
作为空格)\s
:字符串结尾$
:结束表达式/”
$string='a'
另一方面,如果您实际上试图从结果中获取匹配项,则需要使用preg\u match
的第三个参数:
$numResults=preg_match($pattern,$string,$matches)代码>害怕我的4秒领先优势而颤抖!:P@alex4秒添加解释;o) 您可能不需要在角色组中转义这个句点,但它仍然以这种方式工作,并且使程序员的意图显而易见,所以继续这样做。写不可穿透的正则表达式非常容易,所以这是一个concision不是你的朋友的例子。@Rob另一方面,你也会对反斜杠是应该匹配还是应该逃逸感到困惑。不管怎样,如果你问我,这都是一团糟,我喜欢在简洁方面犯错误。@等等,你想用正则表达式验证人们的名字?请停下来。即使在英语中也有很多不寻常的名字(比如奥康纳),但世界各地都有这么多不同的名字,总有一天你会惹人生气的。过度验证从来都不是好事,如果人们愿意,他们无论如何都会输入无意义的内容。您可能希望区分/
(分隔符)和^
(开始锚定符),因为您的示例表明,它们一起表示字符串的开头。此外,如果OP希望匹配所有空白字符(有时不匹配),则只能对空格使用\s
。解决了这个问题,你就得到了我的+1:D