簡體   English   中英

文本輸入的正則表達式

[英]Regular expression for text input

我希望允許用戶輸入數字,小數位前最多3位,可選的小數位,可選小數位后最多2位。

我希望它匹配:12、123、123.5、123.55、123。我不希望它匹配:abc,1234、123.555

到目前為止,我所擁有的是:^ \\ d {0,3}(。?)\\ d {0,2} $

目前,它仍與1234相匹配。我想我需要以某種方式使用“后面看”運算符,但不確定如何。

謝謝

嘗試這個:

^\d{0,3}(?:\.\d{0,2})?$

或更好,以避免只是一個.

^(?:\d{1,3}(?:\.\d{0,2})?|\.\d{1,2})$

具體來說,請注意:

  • 轉義點,或與任何字符(換行符除外)匹配,包括更多數字。
  • 使整個小數部分為可選,包括點。 也就是說-小數點不是可選的-如果我們要匹配小數部分的任何數字,則必須包括小數點。
  • 即使您逃脫了點, ^\\d{0,3}(\\.?)\\d{0,2}$也不正確。 使用點可選,它可以匹配12378\\d{0,3}匹配123(\\.?)不匹配任何內容, \\d{0,2}匹配78

工作示例: http : //rubular.com/r/OOw6Ucgdgq

也許這(未經測試)

^(?=.*\\d)\\d{0,3}\\.?(?<=\\.)\\d{0,2}$

編輯 -上面是錯誤的。

@Kobi的答案是正確的。

可以在他的第一個版本中添加前瞻性,以確保不僅僅是點或空字符串。

^(?=.*\\d)\\d{0,3}(?:\\.\\d{0,2})?$

那這個呢?

/^\d{0,2}(?:\d\.|\.\d|\d\.\d)?\d?$/

您必須將小數點和十進制數字的組合設置為可選。 在您的正則表達式中,只有十進制數字是可選的。 接受1234是因為123滿足^ \\ d {0,3},不存在小數點滿足(。?),而4滿足\\ d {0,2}。

Kobi的答案為您提供了更正的正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM