iiKuzmychov Asked:2022-03-06 02:43:39 +0800 CST2022-03-06 02:43:39 +0800 CST 2022-03-06 02:43:39 +0800 CST C# 正则表达式。防止与空字符串匹配 772 我有一个正则表达式模式^[0-9]*(?:\.[0-9]*)?$,可以检查字符串中的数字。 一切都很好,但它认为一个空字符串是匹配的。这可以避免if(value == "")... else Regex...吗? c# 2 个回答 Voted Best Answer Wiktor Stribiżew 2022-03-06T06:56:44+08:002022-03-06T06:56:44+08:00 非空字符串条件有几个选项: ^(?!$)[0-9]*(?:\.[0-9]*)?$ ^(?=.|\n)[0-9]*(?:\.[0-9]*)?$ ^(?=[\w\W])[0-9]*(?:\.[0-9]*)?$ where^(?!$)禁止在行首结束行,^(?=[\w\W])并且^(?=.|\n)要求行中至少存在一个字符。 在这种特殊情况下,也许最好的表达方式是 ^[0-9]*\.?[0-9]+$ 查看正则表达式如何工作的示例。 细节 ^- 线的开始 [0-9]*- 零个或多个数字 \.?- 可选点 [0-9]+- 一位或多位数字 $- 行结束。 Andrei Khotko 2022-03-06T05:40:52+08:002022-03-06T05:40:52+08:00 我建议这个解决方案 - 添加一个否定传递来匹配恰好出现 0 次的任何字符: ^(?!.{0}$)[0-9]*(?:\.[0-9]*)?$
非空字符串条件有几个选项:
where
^(?!$)
禁止在行首结束行,^(?=[\w\W])
并且^(?=.|\n)
要求行中至少存在一个字符。在这种特殊情况下,也许最好的表达方式是
查看正则表达式如何工作的示例。
细节
^
- 线的开始[0-9]*
- 零个或多个数字\.?
- 可选点[0-9]+
- 一位或多位数字$
- 行结束。我建议这个解决方案 - 添加一个否定传递来匹配恰好出现 0 次的任何字符: