我正在尝试制作一个表达式来验证提供的字符串是否是有效格式,但似乎如果我在几个月内不使用正则表达式,我就会忘记我学到的一切,不得不重新学习它。
我的表达式应该匹配这样的格式:010L0404FFCCAANFFCC00M000000XXXXXX 这四个分隔符是 (L, N, K, M),它们不在 0-9A-F 十六进制范围内,以指示唯一性必须按该顺序或不在列表中。每个分隔符只能存在一次!
它分解为:
- 以 3 位数字开头,它只是 ^([0-9]{3}) 并且始终是必需的
- 第二组以 L 开头,必须是 2 位 + 2 位 + 6 位十六进制,可选
- 第三组以 N 开头,必须是 6 位十六进制,可选
- 第四组 K 是任意数量的数字,是可选的
- 第五组是M,可以是任意6个16进制或XXXXXX表示无,必须是6的倍数,不包括0,如336699(6)或336699XXXXXXFFCC00(18),可选
最难的部分我无法弄清楚使其按顺序和倍数需要它,例如 L 定界符必须在之前,并且 K 总是如果它在那里(原因是我没有得到相同字符串的变体,这意味着相同分隔符交换的东西)。我已经可以解析它了,我只想验证字符串的格式是否正确。
任何帮助将不胜感激,谢谢。