2012-07-03 40 views
1

我只想在字符串中的任何位置包含數字和/或'h'或'H'字符時驗證字符串。僅適用於數字的正則表達式僅加'h'字符

例如

123 - 有效
123H - 有效
11 H 23 - 有效
h234 - 有效
123H - 有效
ASDF - 無效
123D - 無效

我我能夠限制字符串的數字而不是與h的額外要求。我怎樣才能做到這一點?

回答

5
^\d*h?\d*$ 

與ignore case選項一起使用。

查閱here on Regexr

^錨字符串的開始。

\d*匹配0或多個數字

h?匹配0或1小時

\d*匹配0或多個數字

$錨固到字符串的末尾。

+0

謝謝。它的工作:) – deathrace

+0

這對於'12H'不適用於'H'的某處。 '^ \ d * h?H?\ d * $'將是正確的。 –

+0

@VishalSuthar確定它會工作。你讀過我的解釋還是嘗試了regexr鏈接?你的將匹配1hH123 – stema

3

[0-9h]*將匹配任何數字0-9或h。要只允許一個,「h」可以使用[0-9]*h?[0-9]*(我假設你已經在做大小寫不敏感)。您也可以像在[0-9]{1,2}h?[0-9]{1,2}中那樣限制h周圍的數字位數。

讓我們得到真正的忘乎所以,並假設你想允許0-59被輸入爲分鐘,或在小時和分鐘格式分離「H」:

[0-9]{1,2}h[0-5]?[0-9]|[0-5]?[0-9] 
+0

類似這樣的事情也會匹配'1hhhh23h',我認爲這不是OP之後的事情。 – npinti

+0

不錯。但我希望h只在字符串中出現一次。它會爲此工作嗎? – deathrace

+0

怎麼樣:'[0-9] * [hH]?[0-9] *'? – reuben

0

這是有效regerx :

^\d*h?H?\d*$ 

看吧:Regex Example

+0

這將匹配「hH」[Regexr](http://regexr.com?31dvj) – stema

0

使用本:

[^h]*h?[^h]*

這應該工作。

+0

不,這不行。它需要在字符串中有一個'h',並且'!「§$'#* +〜'也是有效的 – stema

+0

你是對的我糾正了我的答案 – Ria

+0

'h'現在是可選的否定字符類' [^ h]'仍然匹配每個不是'h'的字符,而且這個字符太多了。 – stema

相關問題