0

短い正規表現の例を次に示します。

preg_match_all('~(\s+|/)(\d{2})?\s*–\s*(\d{2})?$~u', 'i love regex  00– /   03–08', $matches);
print_r($matches);

正規表現は「03–08」のみに一致しますが、私の意図は「00–」にも一致していました。何が問題ですか?誰でも説明できますか?

4

1 に答える 1

2

最後の部分:

-\s*(\d{2})?$~u

一致と文字列の末尾の間には、スペースおよび/またはオプションで 2 桁の数字のみを含めることができることを意味します。これは00-、それと文字列の末尾の間に他のものがあるため、一致できないことを意味します。

を削除すると$、意図したとおりに動作するはずです。

于 2009-09-08T14:15:46.690 に答える