2015-07-28 45 views
2

我使用這個正則表達式[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?針對數字的以下列表:的正則表達式整數攔截並漂浮在蟒蛇

1 
1.2 
1.0 
1,0 

1wer,043 
1dd.44 
1D 

我的正則表達式中發佈列表中的每個實例相匹配。

這是確定用於所述第一組(11.21.01,1),但它也返回用於第二組(1wer,0431dd.441D)匹配。

如何更新我的正則表達式以排除最後3個示例?

回答

1

問題似乎是你沒有逃離週期字符。這反過來轉換爲匹配任何字符。我已將您的表情更改爲:

^[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?$ 

哪個應該做你以後的事情。

舉例here

額外的^$分別在開始和結束時應該確保字符串只包含數字數據。如果這不是你想要的,也就是說,你想用這個表達式來提取數字數據,那麼你可以簡單地忽略它們。

按@ nhahtdh的評論,你的表達可以通過將.,在字符類進行改進:

^[+-]?(\d+([.,]\d*)?|[.,]\d+)([eE][+-]?\d+)?$ 
+1

可以通過將'.'和','放入字符類'^ [+ - ]?(\ d +([。,] \ d *)?| [。,] \ d +)來改進正則表達式。 [eE] [+ - ]?\ d +)?$' – nhahtdh

+0

@nhahtdh:謝謝你他的建議。 – npinti

0

您應該使用開始(^)和年底($)元字符

^[+-]?(\d+((.|\,)\d*)?|(.|\,)\d+)([eE][+-]?\d+)?$