2010-08-10 106 views

回答

32
^([2-9]|1[0-6])$ 

將匹配2和9之間的單個數字或1和0和6之間的數字(包括0和6)。

+1

簡單而重要。 +1。 – Joey 2010-08-10 16:55:51

+4

+1並刪除我的答案,因爲你擊敗了我8秒。 – 2010-08-10 16:57:03

+0

謝謝! **快速註釋**,如果您不需要從字符串的開頭到結尾進行匹配,或者您不需要捕獲組:[(?:[2-9] | 1 [0-6] )' – skplunkerin 2016-12-22 16:16:12

6

帶分隔符(出於習慣):/^([2-9]|1[0-6])$/

正則表達式本身只是:^([2-9]|1[0-6])$

+0

斜槓是PHP特有的,當某人談論一般正則表達式時可能應該刪除斜槓。 – 2010-08-10 16:56:30

+4

@Billy ONeal:這完全不是PHP特有的。它可以用於任何允許您選擇分隔符的語言。 – eldarerathis 2010-08-10 16:57:44

+1

Perl在PHP之前擁有它們。無論如何,它們確實不是表達的一部分。如果你的語言要求你使用類似的東西,那麼被問到的人可以輕易地添加它們。 – Joey 2010-08-10 16:57:56

1
^([2-9]|1[0-6])$ 

編輯:去掉引號澄清)

+0

引號是特定於如何將正則表達式插入到編程環境中,但在抽象中討論正則表達式時應該將其刪除。 – 2010-08-10 16:57:56

+0

謝謝;糾正。 – alecov 2010-08-10 17:08:44

+2

你的正則表達式「^ [2-9] | 1 [0-6] $」是錯誤的,因爲「|」將「^」分隔爲第一個模式,將「$」分隔爲第二個模式。這裏需要括號,例如:「^([2-9] | 1 [0-6])$」 – vog 2010-08-10 17:16:21

-1

(^ [2 -9] $ |^1 [0-6] $)

通過爲每組數字指定開始和停止,您正在尋找正則表達式不會返回36,46,...等等。我試過上面的解決方案,發現這對於保持在2-16的範圍內效果最好。