我想在編程時,並不總是清楚「反」意味着什麼。
爲了僅根據您提供的示例提出解決方案,我將介紹一個與Vince提供的非常相似的解決方案。我很難編寫一個正則表達式,它可以匹配您需要的模式,並通過重複捕獲組捕獲可能的任意數量的數字。而且我不確定這是否可以通過某種合理的方式實現(也許是其他人的做法)。但是兩步法應該是直截了當的。
請注意,我懷疑你指的是JavaScript的替換函數,它是String對象的成員,而不是jQuery的replaceWith和replaceAll函數,指的是'jQuery替換函數'。後者是'Dom操縱'功能。但是,如果我誤解了,請糾正我。
舉個例子,基於一些假設性的輸入,你可以使用
<b>var numeric_raw = jQuery('input.textbox').attr ('value').replace (/[^0-9.]/g, "")</b>
從文本字段不是數字或時間輸入一個值刪除所有字符; 那麼你可以使用
<b>var numeric_str = numeric_raw.replace (/^[0]*(\d+\.\d{1,2}).*$/, "$1")</b>
這裏指定的類之間以及文斯的回答是,我包括濾波前導零的區別。 需要注意的是,在Vince的第一個註冊前,可能會有一個額外的'/' - 但也許它有一個目的,我沒有抓住。
關於「反向」,理解您的初始詢問的一種方法是您正在尋找與您提供的相反的表達方式。 注意,雖然您提供的表達式(/[0-9]+(.[0-9]{1,2})?/)確實可以將整數和小數與最多兩位小數位匹配,但它也匹配任何單個數字 - 因此,對於給定的輸入字符串,它可以識別可能不被設想的匹配。該表達式沒有錨點('^','$'),因此可能允許多個可能的匹配。例如,在字符串「1.111」中,「1.11」和「1」匹配您提供的模式。
這在我看來,一個不匹配你的模式匹配任何字符串模式如下,或至少沒有這在大多數情況下可以這樣:
/^(?:(?!.*[0-9]+(\.[0-9]{1,2})?).*)*$/
- 如果有人能夠識別一個正好'反向'的模式,請放心 - 我在理解如何解釋至少一些細微差別的方面有些困難。
這依賴於JavaScript這些日子支持的「負面預測」功能。您可以參考多個計算器發佈以瞭解更多信息(例如,Regular Expressions and negating a whole character group),並且可以在Internet上找到討論「向前看」和「向後看」的多種資源。
我想這個答案有一些已經給予的冗餘 - 我可能已經評論過原始海報的帖子或Vince的答案(而不是至少寫出我的答案部分),但我還沒有能夠發表評論!
也許我們可以通過否定正則表達式來幫助您更好地完成您想要完成的實際任務?還請提供您正在使用的編程語言。 – justhalf
你預期接受的字符串是什麼? – justhalf
@justhalf我更新了這個問題,以便更清楚地瞭解我想要完成什麼 – LJS