2

我正在编写一个示例程序,其中一个数字应该接受当且仅当它包含1,2,3,4数字而不考虑它的长度。

例子

应该接受

123
1234
122334444111222
133333333333322222244444

不应该接受

0123
8123
451233441122
12345
12333333335
12321321367

为了实现上述我写了一个regx(正则表达式)"[1-4]+\\d"

上面的 regx 表达式没有检查最后一位数字。它接受以 5、6、7、8、9、0 结尾的数字。

例子

接受

125
2345
123213213232135
1232132132135
1232132132136
1232132132137
1232132132138

不接受

1232321355
232321355
21321360
123278

请任何人解释它不检查最后一位数字的原因,以便有助于进一步探索。并且也有很好的工作表达来做同样的事情。

提前致谢

注意这是在java中

4

2 回答 2

4

问题\\d在最后,它匹配任何数字。把那部分放在外面:

^[1-4]+$

演示:http ://www.rubular.com/r/ydYmT5oeZf

于 2013-03-11T13:17:26.663 回答
1

您必须指定正则表达式必须覆盖整个字符串:

^[1-4]+$

默认情况下,正则表达式搜索给定输入中是否存在任何匹配项。^告诉引擎匹配应该从头开始并且$应该在最后一个字符结束。

http://www.regular-expressions.info/anchors.html

于 2013-03-11T13:15:59.670 回答