regex 正则表达式分隔符允许列表,但必须全部相同[重复]

wd2eg0qa  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(468)

此问题已在此处有答案

How to capture words with letters separated by a consistent symbol in Python regex?(2个答案)
8小时前关闭
是否有一个正则表达式模式,它将有一个允许的分隔符列表,但强制它们必须相同?
例如,我将使用MAC地址:
xx:xx:xx:xx:xx:xx(允许)
xx-xx-xx-xx-xx-xx(允许)
xx:xx-xx:xx-xx:xx(不允许)
我目前正在使用这个:

[RegularExpression("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}){1}$")]
z2acfund

z2acfund1#

可以使用捕获组和反向引用:

^[0-9A-Fa-f]{2}([:-])[0-9A-Fa-f]{2}(?:\1[0-9A-Fa-f]{2}){4}$

Demo

tpgth1q7

tpgth1q72#

可以使用捕获组和反向引用:

^[0-9A-Fa-f]{2}(?=([:-]))(?:\1[0-9A-Fa-f]{2}){5}$
  • ^字符串开头
  • [0-9A-Fa-f]{2}重复字符类2次
  • (?=([:-]))正向预测,Assert并捕获:-
  • (?:\1[0-9A-Fa-f]{2}){5}对组1中最初捕获的内容重复5次反向引用\1,然后重复2次字符类
  • $字符串结束

Regex demo
如果支持,也可以使用不区分大小写的内联修饰符:

(?i)^[0-9a-f]{2}(?=([:-]))(?:\1[0-9a-f]{2}){5}$

相关问题