我正在尝试制作一个正则表达式来匹配某个标准,但我无法让它按照我想要的方式工作。
我目前的正则表达式是
'/S(?:[0-9]){2}E(?:[0-9]){2}/i'
我想做的是符合以下条件
一个S
至少一位数0-9
一个可选的数字,可以是0-9
一个E
至少一位数0-9
一个可选的数字,可以是0-9
如果可能的话,我还希望它能够匹配双数而不是单数,我按照互联网上的教程编写了正则表达式,但认为我遗漏了一些东西。
谢谢...
尝试这个:
<?php
$reg = "#S\d{1,2}E\d{1,2}#";
$tests = array('S11E22', 'S1E2', 'S11E2', 'S1E22', 'S111E222', 'S111E', 'SE', 'S0E0');
foreach ($tests as $test) {
echo "Testing $test... ";
if (preg_match($reg, $test)) {
echo "Match!";
} else {
echo "No Match";
}
echo "\n";
}
输出:
Testing S11E22... Match!
Testing S1E2... Match!
Testing S11E2... Match!
Testing S1E22... Match!
Testing S111E222... No Match
Testing S111E... No Match
Testing SE... No Match
Testing S0E0... Match!
解释:
$reg = "#S\d{1,2}E\d{1,2}#";
^ ^ ^ ^ ^ ^
| | | | | |
Match S | | | | One or two times
Match digit | | Match a digit
One or two times Match the letter E
编辑
或者你可以用类似的东西来做到这一点
$reg = '#S\d\d?E\d\d?#';
也就是说,S 后面跟着一个数字,可能后面跟着另一个数字?
……以此类推。