2017-08-25 62 views
-2

我對正則表達式非常陌生。我想檢查我的電話號碼是否是有效的號碼。使用正則表達式驗證浮點數

如果它包含a-z或諸如+ - 或 - +之類的符號之間的任何內容,則爲無效。對於前: -

425.09z無效

+ -425.09無效

425.09是一個有效的

我使用下面的代碼和困惑如何把OR條件在這裏檢查它是否包含文本中的+ - 或 - +等符號,因此它將無效。我剛剛添加了一個條件[AZ]在if語句和它的正常工作

import re 
text="+-432.18" 
if re.search(r"[a-z]", text): 
    print("invalid") 
else: 
    print("valid") 

輸出: 應屬無效

編輯: +425或-425將是一個有效的數字

+1

'+ 432.18'和' -432.18'? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ編輯我的問題 – codaholic

+0

請參閱[如何檢查字符串是否是數字(浮點數)?](https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string -is-A-數浮動) –

回答

1
^[0-9]+\.?[0-9]+$ 

詳細

  • ^斷言字符串的

  • [0-9]+找數字而已,一個或多個

  • \.?小數開始,尋找0或者這些

  • [0-9]+一個查找的數字只,一個或多個

  • $字符串末尾

See it here

0

您可以使用|來匹配不同的事情。

if re.search(r"[a-z]|\+-|-\+", text): 

你需要逃避+,因爲它在正則表達式的特殊含義。

但通常對於輸入驗證,最好定義好什麼樣的輸入看起來像,並匹配,而不是嘗試列出所有不允許的東西。例如,這將考慮123$456有效,因爲您不檢查$

0

我知道你想使用正則表達式,但我不認爲這是正確的工具。 我只想去一個in檢查:如果要合併的是

>>> regex = re.compile(r"(\+-|-\+)") 
>>> regex.search("+-25.2") is None 
False 
>>> regex.search("+25.2") is None 
True 

現在:

if "+-" in text or "-+" in text: 
    print("Invalid input") 

你可以做同樣的當然是一個正則表達式,這可能更具可擴展性測試到第一個(re.search(r"[a-z]", text),你應該先後應用他們兩個:

regex1 = re.compile(r"[a-z]") 
regex2 = re.compile(r"(\+-|-\+)") 
if regex1.search(text) or regex2.search(text): 
    print("Invalid input")