php - 正则匹配连续5个1212121212或者2121212121,可以重复利用数字
漂亮男人
漂亮男人 2017-07-05 09:58:15
[PHP讨论组]

例如字符串 1212121212121212121212

需要匹配连续出现5个12或者连续出现5个21都算符合条件

匹配个数应该是13个,如下图,红色线的代表符合的。

漂亮男人
漂亮男人

全部回复(6)
曾经蜡笔没有小新

考虑不占位提取,使用环视提取子分组:(?=.*?((12|21)\2{4}))

demo链接:http://regex.zjmainstay.cn/r/...

大家讲道理
>>> import re
>>> ss='1212121212121212121212'
>>> re.findall(r'(?=((12|21)\2{4}))',ss)
[('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12'), ('2121212121', '21'), ('1212121212', '12')]

js的Re引擎有点粗糙,需要循环返回子匹配。

var str="1212121212121212121212";
var pattern=/(?=((12|21)\2{4}))/g;
while(m = pattern.exec(str)){
    console.log(m[1])
    pattern.lastIndex++ //由于没有消耗字符,js的Re引擎不会递增索引。
}
typecho

问题不清,只能猜了。。

(([0-9]){2})+
滿天的星座

/((12){5})|((21){5})/.test(str)

女神的闺蜜爱上我
var pattern=/(?:(1)(?=(?:21){4}2))|(?:(2)(?=(?:12){4}1))/g;
var str="1212121212121212121212";
console.log(str.match(pattern));
高洛峰

/(w+)1{4}/

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号