我的php正则表达式是对的吗?

时间:2012-08-07 08:51:57

标签: php regex

我不擅长正则表达。如何做一个php正则表达式,判断字符串第一个单词是(a-h),第二个单词是@,第三个单词是数字(长度范围是4-15)?

我的php正则表达式是对的吗?

$title  =  'c@356920'; //h@907659042423
if (preg_match ("/^[a-h]{1}\@[0-9]{4,15}/i", $title)) {
    echo 'ok';
}

3 个答案:

答案 0 :(得分:0)

如果您需要匹配,则需要添加后锚标志($)。因此,您需要将代码从此更改为:

$title  =  'c@356920'; //h@907659042423
if (preg_match ("/^[a-h]{1}@[0-9]{4,15}$/i", $title)) {
    echo 'ok';
}

您也无需转义@符号。你的正则表达式将匹配任何以该序列开头的字符串,但允许随后跟随任何其他数量的数据(从我无法判断你是否在追求的问题)。

答案 1 :(得分:0)

到目前为止看起来不错,但是有两个小的改动

/^[a-h]{1}@[0-9]{4,15}$/i
  • 不要逃避@
  • $最后,因为除此之外你允许任意数量的任意字符(它是“行结束”-anchor)。

答案 2 :(得分:0)

如果我们在这里打高尔夫球,我会建议:

/^[a-h]@\d{4,15}$/i

(删除{1}并用\ d替换[0-9]