正则表达式或空字符串不起作用
regex or empty string not working
我正在尝试通过 xsd
验证 xml
。
其中一个字段是一个可选字段,可以包含值或不包含值。就我而言,是计算机的 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 表达式的正则表达式)| ($)
但它不适用于空字符串。
我做错了什么?我该如何解决?
谢谢大家
您的正则表达式中存在错误 - 未转义的 .
匹配任何字符。您可以将其转义或放入一个字符 class,例如[.]
这样它只能匹配文字句点(点)。要匹配空字符串,只需在末尾添加 ?
量词:
((([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
要同时匹配空白行,您需要添加一个替代项:
(\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])))
^^^^
我正在尝试通过 xsd
验证 xml
。
其中一个字段是一个可选字段,可以包含值或不包含值。就我而言,是计算机的 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 表达式的正则表达式)| ($)
但它不适用于空字符串。
我做错了什么?我该如何解决? 谢谢大家
您的正则表达式中存在错误 - 未转义的 .
匹配任何字符。您可以将其转义或放入一个字符 class,例如[.]
这样它只能匹配文字句点(点)。要匹配空字符串,只需在末尾添加 ?
量词:
((([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
要同时匹配空白行,您需要添加一个替代项:
(\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])))
^^^^