我不擅长正则表达式。如何做一个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';
}
如果这就是您需要匹配的全部内容,则需要添加后锚符号 ( $
)。因此,您需要将代码从该更改为:
$title = 'c@356920'; //h@907659042423
if (preg_match ("/^[a-h]{1}@[0-9]{4,15}$/i", $title)) {
echo 'ok';
}
您也不需要转义@
符号。按原样,您的正则表达式将匹配以该序列开头的任何字符串,但允许随后跟随任何其他数量的数据(从问题中我无法判断这是否是您所追求的东西)。
到目前为止看起来不错,但有两个小改动
/^[a-h]{1}@[0-9]{4,15}$/i
@
$
最后,因为否则之后您允许任意数量的任意字符(它是“行尾”-锚点)。如果我们在这里打高尔夫球,我建议:
/^[a-h]@\d{4,15}$/i
(删除 {1} 并将 [0-9] 替换为 \d)