0

此正则表达式验证包含属性的 html 标记,有人可以更正此代码以在 C# RegularExpression 中工作。这个表达式的问题是它在第一个引号处停止的引号,因为它是表达式的一部分,没有人知道如何解决这个问题,或者有人有替代方案。PS 有谁知道 C# .net 正则表达式站点来测试他们的表达式

这是代码:

[RegularExpression(@"</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>")]

这是向表达式添加双引号后的验证输出

 data-val-regex-pattern="&lt;/?\w+((\s+\w+(\s*=\s*(?:&quot;.*?&quot;|&#39;.*?&#39;|[^&#39;&quot;>\s]+))?)+\s*|\s*)/?>"
4

1 回答 1

1

听起来您的问题是字符串文字没有编译为有效的 C#。当使用逐字字符串文字(以 开头的字符串文字)时,您可以通过简单地将字符加倍@来转义字符, . 您的代码应如下所示:"""

[RegularExpression(@"</?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'"">\s]+))?)+\s*|\s*)/?>")]

延伸阅读

但是,我建议稍微调整模式,如下所示:

[RegularExpression(@"</?\w+((\s+\w+(\s*=\s*(?:""[^""]*""|'[^']*'|[^'"">\s]+))?)+\s*|\s*)/?>")]

这实际上代表了模式:

</?\w+((\s+\w+(\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s]+))?)+\s*|\s*)/?>

如果以后将此模式转换为 html,它会如下所示:

&lt;/?\w+((\s+\w+(\s*=\s*(?:&quot;[^&quot;]*&quot;|&#39;[^&#39;]*&#39;|[^&#39;&quot;>\s]+))?)+\s*|\s*)/?>
  • &lt;表示一个编码<字符
  • &quot;表示一个编码"字符
  • &#39;表示一个编码'字符
于 2013-08-26T22:48:07.430 回答