Php 使用正则表达式验证时间GMT偏移和条带化?
问题:Php 使用正则表达式验证时间GMT偏移和条带化?,php,regex,time,timezone,gmt,Php,Regex,Time,Timezone,Gmt,问题: 请看第一场预赛,我们怎么做?我是新来的正则表达式,我只是不知道从哪里开始 在第二个{}上,我们可以通过使用正则表达式来去除+符号吗 格林尼治标准时间范围正确吗-14到+12(这就是我在电视上看到的) 谢谢给你: //将0-15与前面的+和-匹配 // create a string $string = '+7'; // try to match the beginning of the string if(preg_match("{-15 to +12}", $string))
// create a string
$string = '+7';
// try to match the beginning of the string
if(preg_match("{-15 to +12}", $string))
{
// if it matches we echo this line
return {strip all the + sign}
echo 'its a valid gmt time';
}
else
{
echo 'not valid gmt time';
}
if(preg_match("/(+|-)([0-9]|1[1-5])/", $string)){
//match process here
}
这将匹配0..12、+0..+12、-1..-15如果需要+号,请使用不带?的RegExp 然后只需对号码进行str_替换:
/\+?[0-9]|\+?1[0-2]|\-[1-9]|\-1[0-5]/
我会:
$number = str_relace('+', '', $number);
preg_match(“/^([+-]\d+/”,$string,$m);
如果(isset($m[1])&&$m[1]>-16&&$m[1]<13){
回音“这是一个有效的格林尼治时间”;
}否则{
回显“无效gmt时间”;
}
编辑*
我只是注意到如果你在php5.2。
这样做
您希望的格式是什么?必须使用regexp吗?是否需要
+
符号?@aircile您所说的格式是什么意思?对不起,菜鸟:|@kennttm没有regexp有更好的解决方案吗?这段代码有效吗?因为我在这行看到了一些错误-{去掉所有的+符号}@user,$string
应该是什么,所以它是有效的?顺便说一句,如果是10 11或+10+11,-10-11(两个小数点),它不会返回true。我正在尝试[0]
可以用0
来表达。Gumbo你能解释一下吗+1[…]
表示用.
表示的字符之一。现在,如果“…
”只是一个字符,就像本例中的0
,那么只写0
比写[0]
更全面。例如?顺便说一句@adam我刚刚注意到44也可以,请再次检查:|好的,我编辑它。用它来代替。但是它必须是01而不是1,仍然无法计算。嗯,不知道,但它确实给了我一个未定义的偏移量:第2行的1
preg_match("/^([+-]\d+)/", $string, $m);
if(isset($m[1]) && $m[1] > -16 && $m[1] < 13) {
echo 'its a valid gmt time';
} else {
echo 'not valid gmt time';
}
function validGMT($input)
{
$gmt = '/^(?:\+?(?:[0]?[0-9]|[1][0-2])|-(?:[0][0-9]|[1][0-4]))$/';
if ( preg_match( $gmt, $input ) )
{
return true;
}
else
{
return false;
}
}
$val='-2';
$options['options']['min_range'] = -14;
$options['options']['max_range'] = 12;
$var1 = filter_var($val, FILTER_VALIDATE_INT,$options);
var_dump($var1);
$string = '+7';
if (in_array($string, range(-15, 12))) {
echo 'its a valid gmt time';
} else {
echo 'not valid gmt time';
}