2013-02-16 38 views
3

我有以下的正則表達式中收縮/舒張的形式來驗證的血壓值:經常用於血壓表達

\b[0-9]{1,3}\/[0-9]{1,3}\b

表達可與唯一的缺陷,它允許一個以上的非連續斜槓(/)。例如,它允許這個2/2/2。我希望它只允許1到999之間的一個數字格式,並且斜線,再次是1到999之間的一個數字。例如,83/23,1/123,999/999,110/80等。有人給我一些幫助嗎?

我發現的唯一的其他表達式is here^\b(29[0-9]|2[0-9][0-9]|[01]?[0-9][0-9]?)\\/(29[0-9]|2[0-9][0-9]|[01]?[0-9][0-9]?)$,但它不起作用。

順便說一句,我正在使用jQuery。

謝謝。

+2

你應該在兩端用錨。 '卡拉(^)'和'美元($)'。 – 2013-02-16 22:18:47

+0

你是如何使用這個正則表達式的?你能顯示一些代碼嗎? – 2013-02-16 22:20:10

+0

@Rohit:如果血壓是字符串的整體*,如果它匹配'^'和'$'是必需的(除非我誤解了某些東西,這是可能的,因爲我對RegEx還是比較新的),使用RegEx與其匹配沒有意義。 – 2013-02-16 22:20:13

回答

8

使用^$字符串的開頭和結尾匹配:

^\d{1,3}\/\d{1,3}$ 

通過這樣做,你強迫匹配的字符串是形式的正是

+0

Nit:這仍然會接受'0/999',這在技術上是無效的......更不用提各種無意義的值了。有時候,正則表達式只是需要的一部分。 – 2013-02-16 22:35:30

1

請勿使用\b字邊界,因爲斜線會被視爲字邊界。

使用^和/或$可能是您最簡單的解決方案。不幸的是,如果你的輸入是字符串或句子的一部分,或者在一行中出現多次等,你就有更多的想法要做。

0

擴展在Blender的答案,這裏是格式驗證BP值的簡單檢查:120/80:

if(/^\d{1,3}\/\d{1,3}$/.test(120/80)) { 
    console.log("BP Valid"); 
} else { 
    console.log("Invalid BP"); 
}