当前位置:  开发笔记 > 编程语言 > 正文

匹配3-4位数的10的倍数

如何解决《匹配3-4位数的10的倍数》经验,为你挑选了1个好方法。

我正在努力匹配3-4位数的10,最高为1390.低于100的数字从0开始.

示例匹配:

010
200
380
1280
1390

示例不匹配:

0200
285 
231
1400

我目前最接近的模式是:([1-9]|0){1}[0-9]{1,2}0但是它不匹配1130这样的数字.

我如何修改此模式以满足我的需求,或者我应该使用另一种模式?



1> Heinzi..:

正如评论中提到的其他人所说,正则表达式不是这项工作的最佳工具.也就是说,可能存在您没有其他选择的情况,所以让我们继续.

我们遇到了一个难题,所以我们会尝试将其分解成更容易的问题.我们可以按如下方式对可能的数字进行分区,这样各个正则表达式就变得非常明显了:

000-990:那是^[0-9][0-9]0$.

1000-1390:那是^1[0-3][0-9]0$.

现在我们需要做的就是将这两者结合起来.我们注意到它们都有一个共同的前缀^和一个共同的后缀[0-9]0$,所以我们可以将它简化为:

^([0-9]|1[0-3])[0-9]0$

事实上,你可能会让那些必须在几年内保持你的正则表达的穷人(可能是你)让生活更轻松,并保持简单的形式,添加一些评论(需要"忽略空白"选项) :

^( (?# 000, 010, ..., 990)     [0-9][0-9]0
  |(?# 1000, 1010, ..., 1390) 1[0-3][0-9]0
 )$

这是假设也000应该是有效的.如果不应该,你可以应用相同的技术并将你的数字分成010-090,100-9901000-1390.这样做是留给读者的练习.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有