我试图从XML文件中过滤无效字符,并有以下测试项目;
class Program
{
private static Regex _invalidXMLChars = new Regex(@"(?<![uD800-uDBFF])[uDC00-uDFFF]|[uD800-uDBFF](?![uDC00-uDFFF])|[x00-x08x0Bx0Cx0E-x1Fx7F-x9FuFEFFuFFFEuFFFF]", RegexOptions.Compiled);
static void Main(string[] args)
{
var text = "assdabv";
Console.WriteLine(_invalidXMLChars.IsMatch(text));
}
}
该测试项目使用.NET fiddle输出预期结果(True);
但是当我尝试在我的项目中实现相同的代码时,没有找到无效字符并输出"False"。
为什么这工作在。net小提琴,但不是在我的项目?
不能修改源XML文件
Visual Studio是对的。字符&
, #
, x
, F
或;
都不是Regex的一部分。然而,在HTML中,
转换为c#的附属u000f
,然后由于Regex定义