0

我想验证给定年份输入是否为特定格式。年份的格式应该是YYYYADYYYYBC(例如:)2013AD- 4 个数字和 AD/BC,中间没有任何空格。

如果输入格式正确,则应返回 true,否则应返回 false。(一些预期的不正确格式是; 123AD, XYZAD, AD2013, AD, 2013, @123AD, 2013ad)。我怎样才能做到这一点?

4

2 回答 2

5

使用正则表达式,例如/^\d{4}(AD|BC)$/.

正则表达式的解释

  • ^- 字符串的开始
  • \d{4}- 一个从 0 到 9 的数字恰好重复 4 次
  • (AD|BC)- 一组字符串“ AD”或字符串“ BC
  • $- 字符串结束

代码

$input = "2013BC";
if (preg_match("/^(\d{4})(AD|BC)$/", $input, $matches)) {
    echo "OK.\n";
    echo "Year: " . $matches[1] . "\n";
    echo "AC/BC: " . $matches[2];
} else {
    echo "NOT OK!";
}
于 2013-04-05T15:08:30.993 回答
0
function check($year)
{
  if (is_numeric(substr($year, 0, 4)) && in_array(array("AD", "BC"), substr($year, 4,6)))
    return true;
  return false;
}

或者使用正则表达式,你可以检查/d{4}(AD|BC)/

于 2013-04-05T15:08:11.290 回答