如何在正则表达式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";

如何在正则表达式C#中添加null异常

添加(...)?以匹配空字符串。不能将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");