Php正则表达我的情况

时间:2013-01-08 10:39:28

标签: php regex

我想在php中创建一个正则表达式,以确保字符串是以下格式之一:

  • 仅限整数示例:1122
  • 整数,整数示例:88,99
  • 整数,整数,整数示例:88,99,19

任何人都可以帮助我,不能思考任何事情。

2 个答案:

答案 0 :(得分:6)

最简单的正则表达式是\d+(,\d+)*

  • \d+ - 匹配0 - 9
  • 中的数字
  • (,\d+)* - 匹配逗号和(如上所述)0到9之间的数字。*表示可能有0次或更多次出现

如果您需要限制为3次重复,那么这样可以正常工作:\d+(,\d+){0,2}

  • (,\d+){0,2} - 匹配逗号和(如上所述)0到9之间的数字。{0,2}表示最多可能有2次出现(请记住,第一个\d+会匹配第一个整数)

修改

您在评论中描述的问题是,使用的PHP函数执行搜索而不是完全匹配。

  

preg_match - 搜索主题与常规匹配   模式中给出的表达。

所以正则表达式很好。但是对于preg_match函数,它应该是

  • preg_match('/^\d+(,\d+)*$/') - first regexp
  • preg_match('/^\d+(,\d+){0,2}$/') - 第二个regexp

^以匹配您的刺痛(主题)和$的开头以匹配您的字符串的结尾。

答案 1 :(得分:1)

/^(\d+,)*\d+$/

这将匹配任何整数字符串或由逗号分隔的整数列表。

$var = '12'; // allow
//$var = '12,13'; // allow
//$var = '12,13,13'; // allow
//$var = 'aaa12,13,13fff'; // won't allow
//$var = '12,13,13,11'; // allow

if (preg_match('/^(\d+,)*\d+$/', $var))
{
    echo 'correct';
}
else
{
    echo 'wrong';
}