我想要測試一個字符串是否在Java中使用正則表達式之後的兩個數字完全結束。如何實現這一目標?檢查字符串是否以正則表達式中的一個點之後的兩個數字結尾?
「500.23」應該返回true,而「50.3」或「50」應該返回false。
我試過類似"500.00".matches("/^[0-9]{2}$/")
的東西,但它返回false。
我想要測試一個字符串是否在Java中使用正則表達式之後的兩個數字完全結束。如何實現這一目標?檢查字符串是否以正則表達式中的一個點之後的兩個數字結尾?
「500.23」應該返回true,而「50.3」或「50」應該返回false。
我試過類似"500.00".matches("/^[0-9]{2}$/")
的東西,但它返回false。
這裏是一個正則表達式,可以幫助你:
^\d+\.\d{2,2}$
它可能既不完美也不是最有效的,但它應該引領你在正確的方向。
^
說,表達式應該從這裏開始
\d
查找任何數字
+
說,是領先的\ d可以根據需要隨時出現(1-無窮大)
\.
意味着您期待在某一點的點(。)
\d{2,2}
臨時TS的伎倆:它說你想2,準確2位數(不是少不宜多)
$
告訴你,表達到此爲止(後2位)
在Java \需要如此轉義這將是:
^\\d*\\.\\d{2,2}$
編輯
如果你不點(.
)之前,或者如果你真的不在乎什麼來點前需要數字,那麼你就可以取代第一\d+
由提供如波希米亞人的回答。 (非轉義)點意味着該表達式可以包含任何字符(不僅是digets)。那麼即使是領先的^
可能不再需要。
\\.*\\.\\d{2,2}$
'\ d *'也會匹配零位;我想你可以通過使用'\ d {2}' – 2014-10-27 15:00:43
@GyroGearless好點,使正則表達式更加隱密/更短。謝謝。我用+替換了*。關於{2}當然更短,但是當不經常使用RegEx(像我一樣)時,{min,max}符號更容易理解:) – GameDroids 2014-10-27 15:04:27
OP沒有說輸入必須只有數字,所以'ABC.12'也應該通過 – Bohemian 2014-10-27 15:05:43
首先,正斜槓不是正規表達式的任何部分。然而,他們使用某些語言分隔正則表達式 - 但不是java,所以不要使用它們。
其次,在Java matches()
必須整個字符串相匹配,返回真(所以^
和$
在正則表達式暗示)。
試試這個:
if (str.matches(".*\\.\\d\\d"))
// it ends with dot then 2 digits
注意,在Java中的正則表達式一個bash斜線需要由一個字符串字面進一步反斜槓逃逸。
謝謝@波希米亞。請在其他答案中閱讀我的評論。謝謝 – 2014-10-27 15:14:18
我已經做了......'* sob *' – Bohemian 2014-10-27 15:18:46
使用本regex
String s="987234.42";
if(Pattern.matches("^\\d+(\\.\\d{2})$", s)){ // string must start with digit followed by .(dot) then exactly two digit.
....
}
試試這個:( 「* \\ \\ d d」)''str.matches(不值得dignifying與回答這個問題,但是這可能會停止每個人都浪費時間) – Bohemian 2014-10-27 14:54:33
類似於'。* \ d {3} \。\ d {2} $' – 2014-10-27 14:54:34
這似乎很簡單。你現在一定已經嘗試了一些東西。 – 2014-10-27 14:54:40