作者eaden (evenrain)
看板RegExp
标题[问题] 连续数字
时间Thu Jun 13 15:09:57 2013
我有多组数字组成的字串,每个字串长度为 8
我希望抓出其中有4个连续数字的字串
ex.
12345678 => pass
12312312 => not pass
111
56781 => pass
这个有可能用正规表示式写出来吗?
我目前想到的方法是
/
((0123|1234|2345|3456|4567|5678|6789)\d{4}) |
(\d(0123|1234|2345|3456|4567|5678|6789)\d{3}) |
(\d{2}(0123|1234|2345|3456|4567|5678|6789)\d{2}) |
(\d{3}(0123|1234|2345|3456|4567|5678|6789)\d) |
(\d{4}(0123|1234|2345|3456|4567|5678|6789))
/
但是这样感觉好笨...orz
另外一种方法是
\d{0,4}(0123|1234|2345|3456|4567|5678|6789)+\d{0,4}
看起来聪明一点,但是缺点是
4567 跟 9999
34569999 也会过
虽然理论上资料长度都是 8 啦...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.190.212
※ 编辑: eaden 来自: 122.116.190.212 (06/13 15:17)
找到一个方法解决长度问题
^(?=.{8,8}$)(\d*(0123|1234|2345|3456|4567|5678|6789)+\d*)+$
※ 编辑: eaden 来自: 122.116.190.212 (06/13 16:04)