簡體   English   中英

數字的正則表達式,一些特殊字符和NULL

[英]Regex for Numbers, some special characters and NULL

我想創建一個正則表達式,將允許

0-9
.
>
<
%
,
-
NULL

所以我寫了一個正則表達式,例如^[0-9.><%,-NULL]*$

這匹配NULL,但當用戶僅輸入N時不匹配。 所以我做了^[0-9.&gt;&lt;%,-(NULL)]*$但我確實

string pattern = "^[0-9.&gt;&lt;%,-(NULL)]*$";
Regex.Match("N", pattern).Success;

這會引發參數異常並說

`parsing "^[0-9.><%,-(NULL)]*$" - [x-y] range in reverse order.

那么正確的正則表達式應該是什么?

我認為您需要的表達式與此類似:

"^([-0-9.><%,]|NULL)*$"

這將匹配字符集中出現的零個或多個字符(在方括號內)和NULL實例。


NULL設置為字符集的一部分還將分別匹配NUL字符。 嘗試使用(NULL)進行分組不會達到預期的效果,但是會使字符集也與左括號和右括號匹配。

您提到的錯誤( [xy] range in reverse order )是由於表達式中

"^[0-9.><%,-(NULL)]*$"

連字符被認為表示此字符范圍: ,-( 。因為括號在逗號之前,所以字符范圍被認為是相反的順序。

要在字符集中表示連字符( - ),需要避免將其解釋為表示字符范圍。 通過將破折號放在字符集的開頭或結尾,可以很容易地實現這一點。

暫無
暫無

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

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