匹配正则表达式与重复的特殊字符

时间:2017-01-26 06:38:54

标签: regex

有一个测试字符串。

  1. 由8位数组成。
  2. 必须包含----.:分隔符,以便将字符串分成几部分,每个部分都有两位数字。
  3. 字符串必须只有一种分隔符。
  4. 分隔符必须在两边都有整数
  5. 我无法满足第三个条件

    我的回答: ^(\d{2}(([-]{3})|.|:|-)){3}(\d){2}$

    实施例: 1. 11---11---11---11 2. 11:11:11:11

    请帮忙。

2 个答案:

答案 0 :(得分:1)

请注意,要求转换为格式为##:##:##:##的字符串,即两个数字,后跟分隔符等。

您可以为每个分隔符类型使用模式以及更改以包括所有四种分隔符类型:

^(?:\d{2}---\d{2}---\d{2}---\d{2})|
 (?:\d{2}-\d{2}-\d{2}-\d{2})|
 (?:\d{2}\.\d{2}\.\d{2}\.\d{2})|
 (?:\d{2}:\d{2}:\d{2}:\d{2})$

为了便于阅读,我将正则表达式分成多行。

在这里演示:

Regex101

这个正则表达式可以简化为:

^(?:\d{2}---){3}\d{2}|(?:\d{2}-){3}\d{2}|(?:\d{2}:){3}\d{2}|(?:\d{2}\.){3}\d{2}$

但我实际上更喜欢较长的开放形式,因为它更容易阅读。

答案 1 :(得分:0)

更多Simpliefied回答: ^(?:\ d {2}( - ){3}){3} \ d {2} |: - {3} \ d {2} |((\ d {2}?)?:\ d { 2}:){3} \ d {2} |(?:\。d {2}){3} \ d {2} $