试图匹配* / *正则表达式

时间:2014-01-15 18:56:33

标签: regex xsd

我试图在xsd文件中使用正则表达式从xml文件中匹配许多不同的东西。

我正在尝试匹配0或* / *并匹配0-9 / 0-9 0-9是任意数字0 - 9示例0/4应匹配,但0 / a应显示非匹配/无效条目。

可能的条目列表。

0
0 / 0
1 / 4
22 / 22
* / *

非允许条目的示例

1 ( no digits other than 0)
1 / a
a

这是我正在使用的正则表达式,但它有一个缺陷。它匹配0很好但它仍然接受0 / a并且它根本不匹配* / *。

    ^.*\b(0|[0-9]\s\/\s[0-9]|\*\s\/\s\*)\b.*$

2 个答案:

答案 0 :(得分:1)

嗯,允许0 / a的是你正在使用的.*,其中第一个.*不匹配,0将匹配0,最后一个.* / a将与0匹配。而且我认为你真的不需要这里的边界。

首先只匹配^0$

0-9 / 0-9

然后分支接受^(?:0|[0-9] / [0-9])$

09 / 09

如果您想接受多个数字,请添加量词。如果您不想获得[1-9][0-9]*之类的内容,请改用^(?:0|[1-9][0-9]* / [1-9][0-9]*)$

0 / 0

要接受^(?:0|(?:0|[1-9][0-9]*) / (?:0|[1-9][0-9]*))$ ,只需将其添加到另一个'或':

*

最后,要接受0,您可以将^(?:0|(?:[0*]|[1-9][0-9]*) / (?:[0*]|[1-9][0-9]*))$ 与字符类放在一起:

{{1}}

regex101 demo

答案 1 :(得分:1)

这有效:

([\d*]+\s\/\s[\d*]+|0)

示例:http://regex101.com/r/fI0cS5