簡體   English   中英

不允許使用正則表達式的多個點

[英]Don't allow multiple dots using regular expression

我有正則表達式,應該驗證一些數字:

\b\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{1,3}[,]?\d{0,2}\b

數字格式類似於: 123.456,00

它的工作原理幾乎是完美的,除了允許123...456,00 ,我想防止這種情況。 任何幫助或建議都很好。

可能是我錯了,但我想您正在尋找:

\b\d{1,3}(?:\.\d{3})*,\d{0,2}\b

這符合:

  • 1,00
  • 1.234,56
  • 123.456.789,01

您可以使用負數前瞻以避免匹配多個點的數字:

/^(?!(?:.*?\.){2})\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{1,3}[,]?\d{0,2}$/gm

正則演示

(?!(?:.*?\\.){2})為負前瞻,這意味着如果輸入中有2個點,則匹配失敗。


編輯:基於以下注釋,如果您只想允許2個相鄰的點,則使用:

/^(?!.*?\.{2})\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{0,3}[.]?\d{1,3}[,]?\d{0,2}$/gm

正則演示2

暫無
暫無

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

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