文字列のどこかに数値および/または「h」または「H」文字が含まれている場合にのみ、文字列を検証したい。
例えば
123 - 有効
123h - 有効
1h23 - 有効
h234 - 有効
123H - 有効
asdf -無効
123d -無効
文字列を数値のみに制限することはできますが、h を追加する必要はありません。これどうやってするの?
^\d*h?\d*$
大文字と小文字を区別しないオプションと一緒に。
ここRegexrでそれを参照してください
^
文字列の先頭にアンカーします。
\d*
0桁以上に一致する
h?
0または1時間に一致
\d*
0桁以上に一致する
$
文字列の最後にアンカーします。
[0-9h]*
0 ~ 9 または h の任意の数字に一致します。1つだけを許可するには、「h」を使用できます[0-9]*h?[0-9]*
(すでに大文字と小文字を区別していないと思います)。のように h を囲む桁数を制限することもできます[0-9]{1,2}h?[0-9]{1,2}
。
0 ~ 59 を分として、または「h」で区切られた時間と分の形式で入力できるようにしたいとします。
[0-9]{1,2}h[0-5]?[0-9]|[0-5]?[0-9]
これはあなたのために働くはずです/[\dh]*/i
あなたの例はここでテストされています。
これを使って:
[^h]*h?[^h]*
これはうまくいくはずです。