2013-02-24 83 views
1

你好傢伙我想寫一個正則表達式來檢查一個值是否只有數字,但是0不在第一位。例如,值10是正確的,但值01是錯誤的。用於驗證字符串的java正則表達式?

到目前爲止,我有這個mystr.matches("[123456789]+")

+0

'mystr.matches(「[1-9] +」)' – 2013-02-24 16:52:15

+1

'0'是一個正確的數字嗎? – toniedzwiedz 2013-02-24 16:54:47

+0

@LuiggiMendoza我在問''0',只是'0' – toniedzwiedz 2013-02-24 16:56:16

回答

3

試試這個:

mystr.matches("^[1-9]\\d*$") 
+0

您需要使用\\來轉義\字符。 – 2013-02-24 16:59:22

+0

謝謝,改變了它,顯然我必須放入三個\字符,以顯示兩個。 – Jack 2013-02-24 17:02:41

+0

只有**整個**字符串與使用的正則表達式匹配,'matches'纔會返回true,所以不需要'^'和'$':)。下次嘗試使用「{}'」鍵(或Ctrl + K),同時創建答案來格式化所選代碼,並且您不必使用像\\\這樣的技巧來獲取兩個反斜槓:) – Pshemo 2013-02-24 17:09:36

2

我認爲一個人應該做的工作:"([1-9]+[0-9]*)"

乾杯!

+2

因爲你在[0-9]之後有'*',所以你不需要在你的正則表達式中使用+。儘量避免[災難性的回溯] – Pshemo 2013-02-24 16:57:22

+0

是的,你是對的:) - 更好的是傑克回答 – Trinimon 2013-02-24 17:11:26

2

提出的解決方案:

mystr.matches("[1-9]\\d*") 

說明:

  • [1-9]在一開始,以檢查第一個數字是尋找任何數字1和9
  • \\d*之間
  • (0形式到9)。
+0

非常感謝你。問題解決了:) – user43053534 2013-02-24 16:55:49

+0

1,2,3,4,5,6,7,8,9怎麼樣?應該是\\ d *否? – 2013-02-24 16:55:54

+0

當我把2我有問題 – user43053534 2013-02-24 16:58:09

1

您也可以使用這個表達式

^(?!0)\d+$ 
2

所有答案在這裏將驗證號碼,如1,2,3,...,10,11, ...但如果你想要還包括簡單0但不包括0001等等,你可以使用

mystr.matches("0|[1-9][0-9]*") 
相關問題