【问题标题】:Validate a string containing numbers and colon验证包含数字和冒号的字符串
【发布时间】:2016-03-28 10:32:37
【问题描述】:

我有一个<form> 和一个只应包含数字和冒号的<input>,如下所示:

$string = '1:9:3:2:0';

当我验证用户提交的字段时,我想确保这个输入是有效的。例如,如果只有数字,我会进行is_numberic() 检查。

如何验证这个字符串?

澄清:

$string = '1:9:3:2:0'; // pass
$string = '2123:8:1'; // pass
$string = 'a:9:3:2:0'; // fail
$string = '1:9:3:2:'; // fail
$string = '1:9:3:2:0';

regex 声明是否可行?

【问题讨论】:

  • ^\d+(?::\d+)+$ ..........
  • @AvinashRaj 你会做一个 preg_match() 吗?请发布一个答案,概述您的方法以及为什么它是合适的方法。谢谢。

标签: php regex forms validation


【解决方案1】:

使用下面的正则表达式进行字段验证。

var $m = preg_match('~^\d+(?::\d+)+$~', $str);
  • ^ - 行首。

  • \d+ - 匹配一个或多个数字字符。

  • :\d+ - 一个冒号和一个或多个数字。

  • (?::\d+)+ 重复 ^^ 一次或多次。

  • $ 行尾。

编辑:

var $m = preg_match('~^\d+(?::\d+)*$~', $str);

【讨论】:

  • 很好,最后一个问题。它似乎不起作用 validate $str = '5'; -- 有什么方法可以允许这种情况发生?
  • 我看到了这个$string = '19320'; // fail,如果你想验证只有数字的字符串,那么^[\d:]+$ 将是5in。
  • 是的,这是我的一个错误。我已经更新了问题并删除了该行。我想要 $string = '19320';通过。
  • 非常感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2015-09-09
  • 1970-01-01
  • 2020-02-24
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多