2

特定の日の時刻の正規表現を作成しようとしています。それは正しく処理7amされます。11:34pm不正な時間を識別できる必要があります。今、問題に対して有効な正規表現を書いてみました。

正規表現^(([0]?[0-9])|([1][0-2]))(\:[00-59]{2})?(am|pm){1}\b

問題は、前メリディエムでは時間の部分が (または) から1(または01) まで変化する12が、後メリディエムでは0(または00)から まで変化すること12です。この状況の正規表現を推測することはできません。親切に助けてください。

4

5 に答える 5

2

私は12時間システムがどのようなものであるかについて議論し始めるつもりはありませんが、与えられた/修正されたようにあなたの要件を使用するだけです:

問題は、前メリディエムでは時間部分が1(または01)から12まで変化するのに対し、後メリディエムでは0(または00)から12まで変化することです。この状況の正規表現を推測することはできません。親切に助けてください。

次に、この正規表現は機能するはずです。

^(((0?[1-9]|1[012])(:[0-5][0-9])?am)|((0?[0-9]|1[012])(:[0-5][0-9])?pm))\b

ここで自分の目で確かめてください。

于 2013-02-21T14:08:25.097 に答える
1

あなたはいつでも次のようなことをすることができます:

(午前の私の正規表現) | (私の午後の正規表現)

かっこが正しい場所にある限り、正常に機能するはずです。

于 2013-02-21T13:37:32.913 に答える
0

次のようなものを試してください。

^(0?[1-9]|1[0-2])(:([0-5]?[0-9]))?(am|pm)$

于 2013-02-21T13:56:13.197 に答える
0

これは要件に一致する必要があります。

^(([0]?[0-9])|([1][0-2])){1}(\:)?([0-5][0-9])?(am|pm){1}

また、数字を一致させるために正規表現を使用しようとしています

[00-59]

そのようには機能しないと思います。文字列を一致させる必要があります。代わりに [0-5][0-9] として実行する方がよいでしょう。

于 2013-02-21T14:54:44.307 に答える
0

私もこれに適した正規表現を見つけようとしています。Expresso というツールを使用して、次の 12 時間一致の式を作成しました。

((1{0,1}[012]{1})|[0-9]{1}){1}((:|\s)?[0-5]{1}[0-9]{1})?((a|p|A|P){1}(m|M){1})?

次のデータに対してテストしました。

12:00
12am
11111111PM
pm
11122am
13
00am
9a

そして、式は次の一致を思いつきました:

12:00
12am
1111
1111PM
1112
2am
1
3
0
0am
9

データを検証し、一致をデータ長と比較する場合は、11111111PMとから見つかった部分一致を除外できます11122am。これは私にとってはうまくいきます。

于 2014-08-15T15:41:13.047 に答える