【问题标题】:Limit string length with RegEx使用 RegEx 限制字符串长度
【发布时间】:2015-07-11 00:46:36
【问题描述】:

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

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

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

我该怎么办?我应该在 Regex 之后检查 strlen 还是可以限制最大长度?

更新:

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

【问题讨论】:

  • @MarcB 谢谢,我不明白你的意思,我也更新了我的问题
  • 为什么在七个地狱中你会验证一个整数作为一个字符串并在正则表达式中进行长度检查? intval($_POST['number']) >= 100000000 && intval($_POST['number']) < 1000000000
  • @Sammitch:仅仅因为它是数字并不意味着它是一个整数。例如00000000001 != 1.

标签: php regex


【解决方案1】:

您可能只想使用$ 将字符串锚定在末尾。也可以在数字量词后去掉+

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

See test at regex101.com

【讨论】:

    【解决方案2】:

    你可以使用这个正则表达式:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多