我想在php中创建一个正则表达式,以确保字符串是以下格式之一:
任何人都可以帮助我,不能思考任何事情。
答案 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';
}