我正在尝试通过xml
验证xsd
。
其中一个字段是可选字段,可以包含值或不包含值。就我而言,是计算机的IP。
我正在检查常规表达式xsd
以检查它是否具有IP格式,但是当它变为空时无法验证。
以下是example
验证我使用以下正则表达式的IP:
((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))|($)
如您所见,我尝试使用(IP表达式的正则表达式)| ($)
但它不适用于空字符串。
我做错了什么?我该如何解决? 谢谢大家
答案 0 :(得分:1)
你的正则表达式中有一个错误 - 未转义的.
匹配任何字符。您可以将其转义或放入字符类,例如[.]
以便它只能匹配文字句点(点)。要匹配空字符串,只需在末尾添加?
量词:
((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))?
^^^ (dot inside a char class) ^ - The whole pattern can match 1 or 0 times
请参阅regex demo
要匹配空白行,您还需要添加备选方案:
(\s*|((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[.]){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))
^^^^