正则表达式表示数字、一些特殊字符和 NULL

本文关键字:特殊字符 NULL 表示 数字 正则表达式 | 更新日期: 2023-09-27 18:31:24

我想创建一个正则表达式,它将允许

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.

那么正确的正则表达式应该是什么?

正则表达式表示数字、一些特殊字符和 NULL

我认为您需要的表达式如下所示:

"^([-0-9.><%,]|NULL)*$"
这将匹配字符

集中任何字符(方括号内)和 NULL 实例的零个或多个匹配项。


NULL字符集的一部分也将分别匹配NUL字符。尝试使用 (NULL) 进行分组不会产生预期的效果,但还会使字符集也与左括号和右括号匹配。

您提到的错误([x-y] range in reverse order)是由以下事实引起的:在您的表达式中

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

连字符被视为表示此字符范围: ,-( 。由于括号位于逗号之前,因此字符范围被视为相反的顺序。

要表示字符集中的连字符 ( - ),您需要避免将其解释为表示字符范围。通过将短划线放在字符集的开头或结尾最容易实现这一点。