为什么我的两个PHP regexp都失败了?
或为什么我的两个PHP regexp都失败了?,php,regex,Php,Regex,或 字符类只描述一个字符。所以[a-zA-Z]描述了a-Z,a-Z中的一个字符。这同样适用于\w(这也是一个字符类) 您忘记描述该字符类中的字符可能出现的数量,如: ?:零次或一次重复 *:零次或多次重复 +:一次或多次重复 字符类[…]只描述一个字符。所以[a-zA-Z]描述了a-Z,a-Z中的一个字符。这同样适用于\w(这也是一个字符类) 您忘记描述该字符类中的字符可能出现的数量,如: ?:零次或一次重复 *:零次或多次重复 +:一次或多次重复 '/^[a-zA-Z]\-[0-9]\
字符类只描述一个字符。所以
[a-zA-Z]
描述了a
-Z
,a
-Z
中的一个字符。这同样适用于\w
(这也是一个字符类)
您忘记描述该字符类中的字符可能出现的数量,如:
:零次或一次重复?
:零次或多次重复*
:一次或多次重复+
- 字符类
[…]
只描述一个字符。所以[a-zA-Z]
描述了a
-Z
,a
-Z
中的一个字符。这同样适用于\w
(这也是一个字符类)
您忘记描述该字符类中的字符可能出现的数量,如:
:零次或一次重复?
:零次或多次重复*
:一次或多次重复+
'/^[a-zA-Z]\-[0-9]\.(csv)+$/'
您缺少量词,它应该是[a-zA-Z]+
或[a-zA-Z]*
尝试快速优化您的regexp。'/^[a-zA-Z]\-[0-9]\.(csv)+$/'
您缺少量词,它应该是[a-zA-Z]+
或[a-zA-Z]*
尝试快速优化您的regexp。您可以执行以下任一操作:
<?
$subject = "SPRINT-1.csv";
$pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
?>
或
在这两种情况下,您忘记了匹配“SPRINT”的字母前的“+”,在第二种情况下,您忘记了匹配“1”的数字
顺便说一句,您不需要在模式末尾使用“+”,也不需要在csv周围使用()
但是请努力写一个完整的问题。仅仅发布这样的代码并不容易理解
最后,如果要测试regexp,请使用。您可以执行以下任一操作:
<?
$subject = "SPRINT-1.csv";
$pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
?>
或
在这两种情况下,您忘记了匹配“SPRINT”的字母前的“+”,在第二种情况下,您忘记了匹配“1”的数字
顺便说一句,您不需要在模式末尾使用“+”,也不需要在csv周围使用()
但是请努力写一个完整的问题。仅仅发布这样的代码并不容易理解
最后,如果您想测试regexp,请使用。此外,Expresso是编写、理解和测试regex的好工具。因此,Expresso是编写、理解和测试regex的好工具
<?
$subject = "SPRINT-1.csv";
$pattern = '/^[a-zA-Z]*\-[0-9]\.csv?$/';
if(preg_match($pattern, $subject)) {
echo "Match";
} else {
echo "NOPE";
}
?>
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);