[英]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.