正则表达式匹配特定符号后跟数字和字母

时间:2016-03-02 03:02:19

标签: regex

我希望匹配以下格式:

1d2h3m4s5z
51d344h33m44s55z
>12d3h
<12m5s
>12h32s
12s4z
12z

以下内容应返回false / null:

h2m
2g3m4s
455d89m45c
c9m8s

所以第一个字符必须是<>''。然后是1d2h3m4s5z之类的格式,但只有1d1h>1m3s才会返回匹配。

这个想法是这些d h s s代表dayhourminsecondz

这就是我所拥有的^[><]\d+[dhmsz]\d+[dhmsz]\d+[dhmsz]\d+[dhmsz]\d+[dhmsz]$ https://regex101.com/r/tO2oF1/6,但它并不完全正确。只有<2d2h2m2s2z>2d2h2m2s2z有效。

2 个答案:

答案 0 :(得分:0)

(双)负面观察不包括前缀:(?<![^><])

匹配内容(\d+[dhmsz]){1,5}

否定前瞻排除后缀:(?![^dhmsz])

所有这一切都是(?<![^><])(\d+[dhmsz]){1,5}(?![^dhmsz])

应符合您的所有情况

答案 1 :(得分:0)

344h是有效输入吗?

反正:

^[><]+\d*[dhmsz]+\d*[dhmsz]+\d*[dhmsz]+\d*[dhmsz]+\d*[dhmsz]+$    

可以使用任何长度整数。和

\d{,2}

对于最长2位的整数。