这是我的代码
<?php
$str='salamsalam';
echo preg_match('/salam{1,1}/',$str);
?>
我用正则表达式写一次min和max,但我不知道为什么打印1(true),
还有一个问题:
我想接受正好4位数(不多也不少)现在我的代码在这里:
<?php
$num=234567 ;
echo preg_match('/[0-9]{4,4}/',$num);
?>
这不正确,也接受234567。
答案 0 :(得分:3)
<强>问题强>
你的正则表达式在两种情况下都是正确的。
问题是,如果找到任何匹配项,preg_match()
会返回true
- 如果找到多个匹配项,那么它仍会显示为true。
<强>解强>
您可以添加^
以匹配开头,$
以匹配正则表达式中的结尾,以便它匹配整个字符串(或不匹配)。
/^salam$/
/^[0-9]{4}$/
答案 1 :(得分:1)
这两个表达式中的问题是您只是在文本中匹配某处。如果您想确保在与表达式匹配之前和之后没有任何内容,则需要在其中包含开始和结束标记:
<?php
$str = 'salamsalam';
echo preg_match('/^salam$/', $str);
和
<?php
$num = 234567;
echo preg_match('/^[0-9]{4}$/', $num);
请注意,如果您希望完全匹配特定次数,则无需使用{min,max}
。然后你可以使用{num}
。如果你只想匹配一次,你不需要添加任何说明符。