使用RegEx限制字符串长度

时间:2015-07-10 16:37:24

标签: php regex

我写了regex来检查表单中的输入数字:

if (!preg_match("/^0\d{10}+|^9\d{9}+/",$_POST['number'])){
   echo "Error";
}else{
   echo "Ok";
}

此代码将检查最小长度,但如果长度超过10或9个字符,则此正则表达式无效!

我该怎么办?我应该在正则表达式后用strlen检查,还是我可以限制最大长度?

更新

如果以0开头,则字符串长度应为10个字符,如果以9开头则应为9个字符,并且应以其他方式返回false(或多或少的长度,以不同的数字开头......)

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

'/^(0\d{9}|9\d{8})$/'

如果以0开头,这将允许字符串长度正好为10个字符,如果输入以9开头,则字符串长度应为9个字符。

答案 1 :(得分:0)

可能您只想使用$将字符串锚定在最后。也可以在数字量词后删除+

^(?:0\d{9}|9\d{8})$

See test at regex101.com