如何在正则表达式C#中添加null异常
本文关键字:添加 null 异常 正则表达式 | 更新日期: 2023-09-27 17:58:14
如何在下面的regex语句中添加null异常或允许值null?
@"^[a-zA-Z0-9]''d{2}a-zA-Z0-9{2} [A-Za-z0-9]$|[^''x00-''x80]|''b''w{1,1}''b";
添加(...)?
以匹配空字符串。不能将null作为文本输入传递给Regex.Ismatch()
或Regex.Matches()
var r=new Regex(@"(^[a-zA-Z0-9]'d{2}a-zA-Z0-9{2}[A-Za-z0-9]$|[^'x00-'x80]|'b'w{1,1}'b)?");
var isMatchWhenEmpty = r.IsMatch(string.Empty);
//返回真
var result = r.IsMatch(null);
//抛出NullReferenceException
因此,添加额外的验证:
var isMatch = string.IsNullOrEmpty(input) || r.IsMatch(input);
小心你所说的NULL
。在大多数编程语言中,它意味着没有指针、没有引用、未分配,甚至是"零"。空字符串通常不是NULL
。ASCII表中NULL
的代码点0处有一个字符,因此执行'x00
的想法将检测到NULL
字符。
如果你想允许字符串为null或空或与正则表达式匹配,我建议分解这样的操作…
if (String.IsNullOrEmpty(str) || Regex.IsMatch(str, pattern)) {
// null or match. do stuff...
}
试着用这个来说明这一点。。。
string s1 = null;
string s2 = "";
string s3 = "'x0";
if (s1 == s2) Console.WriteLine("s1 == s2");
if (s1 == s3) Console.WriteLine("s1 == s3");
if (s2 == s3) Console.WriteLine("s2 == s3");