我搜索了很多答案,以配合ABAB pattern
匹配任意字符排序的1212或2323的是,已经阅读this too ,但我发现,要匹配的模式ABAB模式没有也行,它比赛4444
正则表达式匹配号码(必须相同)
我揣摩要匹配的模式下面这样的主题:
2323
4545
9898
,但可能不符合4444或5555,因为这是不是在ABAB模式,我将其命名为AAAA模式
能有人给我线索
感谢
我搜索了很多答案,以配合ABAB pattern
匹配任意字符排序的1212或2323的是,已经阅读this too ,但我发现,要匹配的模式ABAB模式没有也行,它比赛4444
正则表达式匹配号码(必须相同)
我揣摩要匹配的模式下面这样的主题:
2323
4545
9898
,但可能不符合4444或5555,因为这是不是在ABAB模式,我将其命名为AAAA模式
能有人给我线索
感谢
您可以使用此模式:
(\d)(?!\1)(\d)\1\2
(\d)
- 捕捉到第一个数字组$1
。(?!\1)
- 检查第二个数字不是第一个数字。(\d)
- 捕获第二位数字为$2
。\1
- 匹配第三位,如果它与第一位相同。\2
- 匹配第四位,如果它与第二位相同。工作实施例:http://www.regex101.com/r/aV2uG1
这是一个比较混乱正则表达式,该任务可以通过的几行代码可以容易地解决。我不是PHP大,但是这似乎工作:
$s = '1112';
$valid = (strlen($s) === 4) && ($s[0] === $s[2]) && ($s[1] === $s[3]) &&
($s[0] !== $s[1]);
可以使用的ABAB模式更简单,更一般的正则表达式是
(.+)(.+)\1\2
击穿:
(.+)
- 匹配一个或多个字符并存储在捕获组中1
(.+)
- 匹配一个或多个字符,并在捕获组存储2
\1
- 在拍摄小组赛同一项目1
\2
- 在捕获组2
匹配相同的项目工作例如:https://regex101.com/r/qJ2wM7/1
你需要一个反向引用http://www.regular-expressions.info/brackets.html –
是否必须匹配ABAB和AAAA或仅ABAB? –
应该只匹配ABAB而不是AAAA – xnome