php - 带计数的正则表达式

标签 php regex

这是我的代码

<?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 。

最佳答案

问题

您的正则表达式在这两种情况下都是正确的。

问题是,如果找到任何匹配,preg_match() 返回 true --- 如果找到多个匹配,那么它仍然会打印 true .


解决方案

您可以在正则表达式中添加 ^ 来匹配开头,添加 $ 来匹配正则表达式中的结尾,这样它将匹配整个字符串(或非字符串)。

/^salam$/
/^[0-9]{4}$/

关于php - 带计数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721652/

相关文章:

php - 仅在溢出时启用滚动条

php - 在 PHP 中包含文件的最佳方式?

php - 在这种情况下,哪个更适合匹配正则表达式或 parse_url

javascript - 修改格式模式以替换字符串中的占位符

javascript - 如何使用 php time() 作为基准时间在 javascript 中显示世界时间?

php - 获取数据 : Complex MySQL query, 与 PHP 周期

phpmyadmin 触发器

regex - awk 是在日志文件中搜索日期/时间范围的最快方法吗?

java - 如何将 "<pre>"标记包装在 java String 中的空格周围?

php - PHP 中的 Walking Dom 将找到的字符串列表替换为 "HTML text"