3

重複の可能性:
PHPを使用したCrontabエントリの検証

私はどこでも検索を行っていますが、正規表現が貧弱なので、支援を求めています。

私はWebベースのCRONツールを構築していますが、フォームは以下を処理スクリプトに渡すことができます。'0-99' ',' '*' '-' '/'

PHPで単純なpreg_matchを使用して入力を検証したいのですが、正しい正規表現を思い付くことができないようです。誰かが助けることができますか?また、cronの各項目を検証します。つまり* * * * *ではなく、分値、次に時間値などを検証します。これにより、より具体的なエラーを送り返すことができます。

渡された値の例は次のようになります

*
0,10
*/5
1,3,5
1-5

これは数字を一致させるだけの悪い試みであり、* / [0-9*]/どんな援助も素晴らしいでしょう。

よろしく

4

1 に答える 1

4

どれどれ:

$pattern = '/^(?:[1-9]?\d|\*)(?:(?:[\/-][1-9]?\d)|(?:,[1-9]?\d)+)?$/';

このパターンにより、有効なCRONセンテンスの妥当なサブセットを照合できます。それは確かにあなたの例の一つ一つに一致します。ただし、正確なパターンは、定義する文法によって異なります。

編集
正規表現のマッチングだけではそれをカットできないことを言及するのを忘れました。それができることは、(簡略化された)構文に関して入力が正しいかどうかをチェックすることです。それ以外の場合は、セマンティクスに関して入力を検証する必要があります(たとえば、0〜23時間、1〜30 / 1日など)。

于 2012-10-08T16:05:47.313 に答える