我正在尝试制作一个符合某个标准的正则表达式,但我无法按照我想要的方式运行它.
我现在的正则表达式是
'/S(?:[0-9]){2}E(?:[0-9]){2}/i'
Run Code Online (Sandbox Code Playgroud)
我想要它做的是符合以下标准
一个 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";
}
Run Code Online (Sandbox Code Playgroud)
输出:
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!
Run Code Online (Sandbox Code Playgroud)
说明:
$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
Run Code Online (Sandbox Code Playgroud)
编辑
或者你也可以这样做
$reg = '#S\d\d?E\d\d?#';
Run Code Online (Sandbox Code Playgroud)
也就是说,S后跟数字,可能后跟另一个数字?......等等.