这个正则表达式验证包含属性的html标签,有人可以更正此代码在C#RegularExpression中工作。这个表达式的问题是它在第一个引号处停止的引号,因为它是表达式的一部分,没有人知道如何解决这个问题,或者是否有人有替代方法。 P.S有没有人知道一个C#.net正则表达式网站来测试他们的表达式
以下是代码:
[RegularExpression(@"</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>")]
这是在对表达式
添加双引号后的验证输出 data-val-regex-pattern="</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>"
答案 0 :(得分: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,它将看起来像这样:
</?\w+((\s+\w+(\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s]+))?)+\s*|\s*)/?>
<
代表编码的<
字符"
代表编码的"
字符'
代表编码的'
字符