给定一个十进制数字N作为一个数字字符串,如何通过M 仅使用正则表达式检查它是否可被整除,而不转换为int?
M = 2,4,5,10是显而易见的.对于M = 3,这里有一些有趣的见解:正则表达式过滤器数字可被3整除
任何人都可以为M = 7,9,11,13等提供解决方案吗?通用的?
测试代码(在python中,但随意使用任何语言):
M = your number, e.g. 2
R = your regexp, e.g., '^[0-9]*[02468]$'
import re
for i in range(1, 2000):
m = re.match(R, str(i))
if i % M:
assert not m, '%d should not match' % i
else:
assert m, '%d must match' % i
Run Code Online (Sandbox Code Playgroud)
对于那些好奇的人,这里有一个例子M=3(假设一个带递归支持的引擎):
^
(
| [0369]+ (?1)
| [147] (?1) [258] (?1)
| [258] (?1) [147] (?1)
| ( …Run Code Online (Sandbox Code Playgroud) 你如何编写一个正则表达式来定义0和1的所有字符串,作为二进制数,表示一个3的倍数的整数.
一些有效的二进制数将是:
11 110 1001 1100 1111
我需要对以秒为单位的输入时间间隔应用验证.现在我并不擅长正则表达式.所以任何身体都可以帮助制作一个正则表达式,可以测试一个数字是否可被60整除.
我想知道我是否可以用来测试一个检查数字是否可以被10整除,然后检查它是否可被6整除.
对于可被10整除的数字,这里[\ d*0]是我猜的表达式.如果我错了,请纠正我.
希望有人能解决我的问题.
谢谢