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))

问题:

  • 请看第一场预赛,我们怎么做?我是新来的正则表达式,我只是不知道从哪里开始

  • 在第二个{}上,我们可以通过使用正则表达式来去除+符号吗

  • 格林尼治标准时间范围正确吗-14到+12(这就是我在电视上看到的)

  • 谢谢

    给你:

  • //将0-15与前面的+和-匹配

    // 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';
        }
    
  • 我想这会和你的-15,+12相匹配

  • 去掉所有的{+}符号

    //取出+并替换为+ $newString=str_replace(数组(“+”),$oldString)

  • regexp可以是:

    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';
    }