簡體   English   中英

正數表達式驗證器,數字從負范圍開始,結束為正數

[英]Regular Expression validator for number starting in negative range and ends i positive

我試圖解決我的形式問題。

我有一個文本框,我必須驗證一個數據,它必須是一個數字,范圍從-90到90,沒有逗號,只允許點例如:2.34允許3,54禁止134禁止-78允許

我已經創建了這個表達式: ^ [ - +]?[0-9] *。?[0-9] + $它支持我的數據格式化但不驗證數據范圍,任何人都可以建議我嵌入這個表達式的解決方案。

<asp:RegularExpressionValidator runat="server" id="wspXformat" 
controltovalidate="textBox1" validationexpression="^[-+]?[0-9]*\.?[0-9]+$" errormessage="Data Error" /><br />

我知道我可以用代碼制作它,但也許有一種更簡單的方法。

你應該使用RangeValidator

<asp:RangeValidator runat="server" id="wspXformat" ControlToValidate="TextBox1"
     MinimumValue="-90" MaximumValue="90" Type="Double"
     Text="The value must be from -90 to 90!"  />

與提出復雜的正則表達式相比,解析數字並檢查其值更容易。 如果RangeValidator不適合您,您還可以考慮CustomValidator

檢查介於-90和+90之間的數字

有效數字在小數點前有一位或兩位有效數字。 它們之前可能有一個符號和一些無關緊要的零。

忽略前導符號和任何前導零似乎有三種情況,所以也許帶有交替的正則表達式(即| )會很有用。 案件是

value = 90
10 <= value < 90
0 <= value < 10

其中兩種情況是“小於”,這意味着小數點,並允許一些小數位。

還有另一種情況可以處理諸如.5數字,它在小數點之前沒有數字。

考慮到這些因素導致表達:

^[-+]?0*(90(.0*)?|[1-8]\d(\.\d*)?|[0-9](\.\d*)?|\.\d*)$

(使用Notepad ++ 6.5.5測試。)

前導^和尾隨$使它檢查整個字符串。 [-+]?0*用於可選符號和可選前導零。 ( | | | )分隔可選符號和可選前導零之后的四種情況。 90(.0*)? 正好看90后,可選零分數部分。 [1-8]\\d(\\.\\d*)? 處理10到89之間的任何內容,以及可選的小數部分。 [0-9](\\.\\d*)? 處理0到9之間的任何內容,以及可選的小數部分。 \\.\\d*處理沒有任何整數位的分數。

檢查-180和+180之間的數字

可以使用與上述相同的樣式。 首先找到可能的字符串集合,然后組合成正則表達式。

和以前一樣,允許使用可選符號和前導零。 數字本身可以

value = 180
100 <= value < 180
10 <= value < 100
0 <= value < 10
.0 <= value < 1  (and no integral part)

這里有五種變化。 結合所有部分給出:

^[-+]?0*(180(.0*)?|(1[0-7]\d(\.\d*)?)|\d\d(\.\d*)?|\d(\.\d*)?|\.\d*)$

上述兩種替代方案可以很容易地組合在一起。 |\\d\\d(\\.\\d*)?|\\d(\\.\\d*)?| 部分可以更改為|\\d\\d?(\\.\\d*)?| 將整體表達縮短為:

^[-+]?0*(180(.0*)?|(1[0-7]\d(\.\d*)?)|\d\d?(\.\d*)?|\.\d*)$

暫無
暫無

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

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