$subject = "SPRINT-1.csv";
$pattern = '/^[a-zA-Z]\-[0-9]\.(csv)+$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
或
$subject = "SPRINT-1.csv";
$pattern = '/^\w\-\.(csv)+$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
答案 0 :(得分:5)
字符类[…]
仅描述一个字符。因此,[a-zA-Z]
描述了a
- z
,A
- Z
中的一个字符。这同样适用于\w
(也是一个字符类)。
您忘记描述可能出现的字符类中的字符数量,例如:
?
:零次或一次重复*
:零次或多次重复+
:一次或多次重复答案 1 :(得分:1)
'/^[a-zA-Z]\-[0-9]\.(csv)+$/';
您错过了量词,它应该是[a-zA-Z]+
或[a-zA-Z]*
。
尝试http://www.regexp.net/以快速优化正则表达式。
答案 2 :(得分:0)
<?
$subject = "SPRINT-1.csv";
$pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
?>
答案 3 :(得分:0)
你可以这样做:
preg_match_all('/^[a-zA-Z]+\-[0-9]\.csv$/i', 'SPRINT-1.csv', $result);
或
preg_match_all('/^\w+\-\d\.csv+$/i', 'SPRINT-1.csv', $result);
在这两种情况下,你忘记了匹配“SPRINT”的字母前面的“+”,在第二种情况下,你忘记了匹配“1”的数字。
顺便说一句,你不需要模式结尾处的“+”,也不需要csv周围的()。
但是,请努力写一个完整的问题。发布这样的代码并不是很容易理解。
最后,如果要测试正则表达式,请使用good tool。