簡體   English   中英

用於驗證NUMBER(m,n)的正則表達式

[英]Regex for validating NUMBER(m,n)

我使用以下正則表達式來驗證帶有+/-前綴的列數據類型NUMBER(9,2)的傳入數據(可選)。

[+-]?(?:[0-9]{1,7})?(?:\.[0-9]{1,2})?

允許值

+1
+1.1
-0.1
+.1
1
1.1
0.1
1
-1
-1.1
-.1
1111111.11
+1111111.11
-1111111.11

失敗案例

+
-

但是,由於捕獲組都是可選的,因此它也只接受+/-符號。 我們如何克服這個問題?

更新

由於所有捕獲組都是可選的,因此如果發生,將不可避免地匹配單個[+-]
使用以下正則表達式模式:

^[+-]?(\d{1,7}|(?=\.))(\.\d{1,2})?

https://regex101.com/r/4GIOga/5

您可以在符號類之后使用正向前瞻來表示僅在其后跟任何內容時才允許它們:

^[+-]?(?=.+)(?:[0-9]{1,7})?(?:\.[0-9]{1,2})?$

如果您一次測試所有數字,則需要設置多行修飾符。

觀看演示

用這個

^{-|\+}?\d+(\.\d{1,2})?$

這將適用於您提出的每種情況。

暫無
暫無

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

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