我不擅长正则表达。如何做一个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';
}
答案 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]