PHP 正则表达式,每个检查都为真
PHP Regex, every Check got true
我在 PHP
中的正则表达式有一些问题
代码:
$pregResult = preg_match('/(([S][S])[1-9]{2})|(([W][S])[1-9]{2}\/[1-9]{2})/', $newModul->getGueltigkeitszeitraum());
我每次都得到 1 作为结果...(正确)
我想做的只是允许以下组合
SS00 - SS99
WS00/00 - WS99/99
我的代码有什么问题?
试试这个:
$pregResult = preg_match('/^([S][S][0-9]{2}|[W][S][0-9]{2}\/[0-9]{2}|Schuljahr[0-9]{2}\/[0-9]{2})$/',
$newModul->getGueltigkeitszeitraum());
^
: 模式应该在字符串的开头
$
: 字符串中的模式后不应有任何内容
[S]
:字符S
[0-9]
:一个数字(与\d
相同)
[0-9]{2}
:准确的 2 位数字
查看此处了解更多信息PHP Regular Expression
我想你想要这样的东西,
$pregResult = preg_match('~^(?:(SS[0-9]{2})(?:\h+-\h+(?1))|(WS[0-9]{2}\/[0-9]{2})(?:\h+-\h+(?2)))$~m', $newModul->getGueltigkeitszeitraum());
(?1)
递归第一个子模式。
[0-9]
匹配0到9的所有数字
或
SS00 - SS99
,我想你的意思是从 SS00
到 SS99
。在这种情况下,您可以使用 \d
(匹配范围为 0 到 9 的数字)。
$pregResult = preg_match('~^(?:SS\d{2}|WS\d{2}\/\d{2})$~m', $newModul->getGueltigkeitszeitraum());
我在 PHP
中的正则表达式有一些问题代码:
$pregResult = preg_match('/(([S][S])[1-9]{2})|(([W][S])[1-9]{2}\/[1-9]{2})/', $newModul->getGueltigkeitszeitraum());
我每次都得到 1 作为结果...(正确)
我想做的只是允许以下组合
SS00 - SS99
WS00/00 - WS99/99
我的代码有什么问题?
试试这个:
$pregResult = preg_match('/^([S][S][0-9]{2}|[W][S][0-9]{2}\/[0-9]{2}|Schuljahr[0-9]{2}\/[0-9]{2})$/',
$newModul->getGueltigkeitszeitraum());
^
: 模式应该在字符串的开头
$
: 字符串中的模式后不应有任何内容
[S]
:字符S
[0-9]
:一个数字(与\d
相同)
[0-9]{2}
:准确的 2 位数字
查看此处了解更多信息PHP Regular Expression
我想你想要这样的东西,
$pregResult = preg_match('~^(?:(SS[0-9]{2})(?:\h+-\h+(?1))|(WS[0-9]{2}\/[0-9]{2})(?:\h+-\h+(?2)))$~m', $newModul->getGueltigkeitszeitraum());
(?1)
递归第一个子模式。
[0-9]
匹配0到9的所有数字
或
SS00 - SS99
,我想你的意思是从 SS00
到 SS99
。在这种情况下,您可以使用 \d
(匹配范围为 0 到 9 的数字)。
$pregResult = preg_match('~^(?:SS\d{2}|WS\d{2}\/\d{2})$~m', $newModul->getGueltigkeitszeitraum());