我正在尋找一個正則表達式來驗證從046R到120R的任何字符串。正則表達式來驗證字母數字連續字符串
聽起來很簡單,但我在這裏錯過了一些東西。 這是我有:
^04[6-9]R|0[5-9][0-9]R|10[0-9]R|11[0-9]R|120R +$
但它不拿起120R作爲一個有效的字符串爲好。這個表達可以簡化嗎?
在此先感謝。
我正在尋找一個正則表達式來驗證從046R到120R的任何字符串。正則表達式來驗證字母數字連續字符串
聽起來很簡單,但我在這裏錯過了一些東西。 這是我有:
^04[6-9]R|0[5-9][0-9]R|10[0-9]R|11[0-9]R|120R +$
但它不拿起120R作爲一個有效的字符串爲好。這個表達可以簡化嗎?
在此先感謝。
刪除最後的 +
。否則,需要驗證字符串120R
後需要一個或多個空格。
此外,|
具有非常低的優先級。 ^
和$
應該停留在包含|
的組之外。
^(?:04[6-9]|0[5-9][0-9]|1[01][0-9]|120)R\s*$
打敗我吧。還有一件事,如果你希望允許尾隨空格,你可以使用'*'(零或多個)而不是'+'(一個或多個):'^(...)R * $'乾杯! – 2011-04-03 21:18:03
這沒有解決。它不接受它應該的一些價值。看看:[鏈接] http://www.rubular.com/r/YZsPIRInNV – Bruno 2011-04-04 00:57:44
@布魯諾:這是因爲你的測試案例不是「乾淨」 - 一些條目包含不必要的尾部空間。這可以通過像Xavier的評論那樣在末尾添加'\ s *'來解決。請參閱http://www.rubular.com/r/3prIDsOncr – kennytm 2011-04-04 05:19:58
您可以通過使用負向預測排除某些匹配,並簡化正則表達式。
^(?!0[0-3])(?!04[0-5])[01]\d\dR$
爲什麼在120R之後有'+'(僅)?這意味着當你有120R時,它必須至少有一個空格。 – sawa 2011-04-03 21:13:02
'10 [0-9] R | 11 [0-9] R'_1'01 [0-9] R'。 – 2011-04-03 21:16:20