我试图验证对SQL Server 2005中的XML架构的XML输入和确认电子邮件时,我得到一个错误:SQL服务器 - XML验证:无效的简单类型值
消息6926 ,Level 16,State 1,Line 4
XML验证:无效简单类型值:'[email protected]'。位置:/ :XXX [1]/:YYY [1]/*:电子邮件[1]
电子邮件字段在架构定义为:
<xsd:simpleType name="EMailType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />
</xsd:restriction>
</xsd:simpleType>
每个电子邮件地址匹配正则表达式被认为是有效的,除了有下划线的东西([email protected]
是好的,[email protected]
是好的,但[email protected]
不是)。
如果我删除下划线,则验证XML。
我用各种工具测试了我的regexp(这是你可以在MSDN上找到的用于验证电子邮件的那个),他们都说它是有效的。但不是SQL Server。
为什么它不验证下划线?在SQL Server中有什么特别的我必须做的吗?
同样的问题: http://stackoverflow.com/questions/2973052/underscore-not-accepting-in-xml-schema-for-email-address – Asken
@Asken:该职位治疗无效的正则表达式。我的正则表达式是有效的,SQL Server拒绝验证其中的下划线(从我可以发现它与SQL注入有关,因为_是搜索通配符) – JohnDoDo
对不起,如果这是一个愚蠢的问题,但你的正则表达式模式不允许'_'对吗?至少这是在XMLSpy中使用它的行为。所以预期来自SQL Server的错误信息是因为'_'不被允许或者我错过了什么? –