0

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

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

任何人都可以帮助我,无法思考。

4

2 回答 2

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+)*$/')- 第一个正则表达式
  • preg_match('/^\d+(,\d+){0,2}$/')- 第二个正则表达式

^匹配字符串的开头(主题)并$匹配字符串的结尾。

于 2013-01-08T10:41:07.507 回答
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';
}
于 2013-01-08T10:42:50.237 回答