2017-08-11 28 views
-1

我無法構建正確的正則表達式。Java - 正則表達式 - 允許0-9,句點,繁殖

有效:

  • 1.1.1
  • 1.1-1
  • 1-1.1
  • 1-1-1
  • 1-1
  • 1.1

無效:

  • 1..1
  • 1.
  • 1--1
  • 1-

到目前爲止,我得到了

^[0-9]+[0-9.-][0-9]+$ 

感謝您的幫助

+0

嘗試像這樣:'([0-9] + [.-])* [0-9] [.-]?'(Methods' matches()'do full match,'^ $'are對他們來說不是必需的。) –

+0

舉例是不夠的。你必須指定你的規則。 – EJP

+0

@EJP他放下了他正在使用的正則表達式,這對他不起作用。所有這些都很好地格式化。你還有什麼期望呢?我認爲這對於新手來說是個不錯的問題。 – GhostCat

回答

4

^[0-9]+[0-9.-][0-9]+$模式匹配爲與1個或多個數字([0-9]+),一個數字或.-[0-9.-])以及一個或多個數字([0-9]+)完全匹配。它可以匹配連續的-或/和.內的一串數字。

您可以使用

^[0-9]+(?:[.-][0-9]+)*$ 

regex demo

如果在.matches()方法使用它時,^$錨可以省略。

詳細

  • ^ - 字符串的開始
  • [0-9]+ - 1以上(+量詞匹配1次或多次出現,如果你只需要匹配一個單次發生刪除+量詞)數字
  • (?:[.-][0-9]+)* - 零或更多連續的sequ的
    • [.-]分配辦法 - 一個.-
    • [0-9]+ - 1或多個數字(同樣的量詞音符如上適用)
  • $ - 字符串的結尾。
0

在這裏,這應該做的:

^[0-9]([.-][0-9])*$ 

一個數字,後跟零所或多個出現的(點/減位)其他答案

0

稍有不同。 你沒有表明一個孤獨的數字的情況下,無期和連字符:

  1. (無效) 1-(無效) 1(我假設這種情況下是無效的)

而且這正則表達式只允許單個數字(例如2.2.2,不22.22.22)

^\d([.-]\d)+$ 
0

兩個

^[0-9]([.-][0-9])*$ 

^[0-9]+(?:[.-][0-9]+)*$ 

作品。謝謝