Regex xsd文件中的html正则表达式验证

Regex xsd文件中的html正则表达式验证,regex,xsd,Regex,Xsd,我编写了正则表达式来验证xml模式的url(它必须需要http): ^[https?]+://([^/:]+\.[a-z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?(\/.*)?$ 我现在正试图避免所有的限制。我想到了这个: [https?]+://([^/:]+\.[a-z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?[^>](\/.*) 但是仍然得到了关于无效正则表达式的XmlSchema

我编写了正则表达式来验证xml模式的url(它必须需要http):

^[https?]+://([^/:]+\.[a-z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?(\/.*)?$
我现在正试图避免所有的限制。我想到了这个:

[https?]+://([^/:]+\.[a-z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?[^>](\/.*)

但是仍然得到了关于无效正则表达式的XmlSchemaPasserError。你能帮我解决这个问题吗?

删除
^
$
锚定是正确的一步,因为它意味着匹配整个字符串输入,
^
$
不像大多数(如果不是所有的话)其他正则表达式那样被视为字符串元字符的开始/结束

匹配一个或多个
h
t
p
s
字符的
+
必须转换为
https?
字符以匹配
http
,这是可选的
s

您不需要转义
/
,而是将
\/
转换为
/

此外,末尾的
/.*
应该是可选的,添加
量词

使用

一些用法:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 
  <xsd:element name="ElementNameHere">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string"> 
        <xsd:pattern value="https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?(/.*)? "/> 
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:element>
</xsd:schema>


您所说的“避免……的所有限制”是什么意思?注意:首先,我不认为
[https?]+
做了您认为的事情:它允许
[]
之间的任何字符以1到任意次数的顺序出现。您可能想要
https?
(按照严格的顺序,可以选择“s”)而不是
[https?]+
[https?]+
必须将
https?
转换为
https?
,您不需要转义
/
。此外,结尾的
/.*
可能是可选的。试试https?:/([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}){3}[0-9]{1,3})(:[0-9]+)(/.*)@WiktorStribiż它能工作吗,好的。多谢各位。如果你把你的评论改成答案,我会接受:)
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 
  <xsd:element name="ElementNameHere">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string"> 
        <xsd:pattern value="https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?(/.*)? "/> 
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:element>
</xsd:schema>