正则表达式表示数字、一些特殊字符和 NULL
本文关键字:特殊字符 NULL 表示 数字 正则表达式 | 更新日期: 2023-09-27 18:31:24
我想创建一个正则表达式,它将允许
0-9
.
>
<
%
,
-
NULL
所以我写了一个像^[0-9.><%,-NULL]*$
这样的正则表达式
这匹配 NULL,但当用户仅输入 N
时不应匹配。所以我做了^[0-9.><%,-(NULL)]*$
但我确实做到了
string pattern = "^[0-9.><%,-(NULL)]*$";
Regex.Match("N", pattern).Success;
这抛出参数异常并说
`parsing "^[0-9.><%,-(NULL)]*$" - [x-y] range in reverse order.
那么正确的正则表达式应该是什么?
我认为您需要的表达式如下所示:
"^([-0-9.><%,]|NULL)*$"
这将匹配字符集中任何字符(方括号内)和 NULL
实例的零个或多个匹配项。
NULL
字符集的一部分也将分别匹配N
、U
和L
字符。尝试使用 (NULL)
进行分组不会产生预期的效果,但还会使字符集也与左括号和右括号匹配。
您提到的错误([x-y] range in reverse order
)是由以下事实引起的:在您的表达式中
"^[0-9.><%,-(NULL)]*$"
连字符被视为表示此字符范围: ,-(
。由于括号位于逗号之前,因此字符范围被视为相反的顺序。
要表示字符集中的连字符 ( -
),您需要避免将其解释为表示字符范围。通过将短划线放在字符集的开头或结尾最容易实现这一点。