用于验证风格式的正则表达式

时间:2015-11-12 12:17:52

标签: regex swift2

我正试图验证空中交通管制的风向和速度格式,例如190/10。风向必须从001到360,风速从00到30。

我试过了

^(0[0-9][1-9]|1[0-9][0-9]|2[0-9][0-9]|30[0-9]|31[0-9]|32[0-9]|33[0-9]|34[0-9]|35[0-9]|36[0])[\/](0[0-9]|[12][0-9]|3[0])$

但它不起作用。然而,这部分工作

^(0[0-9][1-9]|1[0-9][0-9]|2[0-9][0-9]|30[0-9]|31[0-9]|32[0-9]|33[0-9]|34[0-9]|35[0-9]|36[0])|/|(0[0-9]|[12][0-9]|3[0])$

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

你可以尝试

^(?:[0-2]\d\d|3[0-5]\d|360)\/(?:[0-2]\d|30)$

DEMO

其中,

(?:...)Non-capturing group

  • 第一选择:[0-2] [0-9] [0-9]
  • 第二选择:3 [0-5] [0-9]
  • 第三种选择:360

\/字面匹配字符/

(?:...)Non-capturing group

  • 第一选择:[0-2] [0-9]
  • 第二选择:30

注意:\d匹配数字[0-9]

答案 1 :(得分:0)

对于0-360部分,您可以使用:

'^((?:\d)|(?:\d\d)|(?:[0-3][0-5]\d)|(?:00\d)|(?:360))' # correctly anchored at the end

Demo

所以,这值得一试:

^((?:(?:\d)|(?:\d\d)|(?:[0-2]\d\d)|(?:3[0-5]\d)|(?:00\d)|(?:360))\/(?:(?:30)|(?:[0-2]\d)))$

Demo

答案 2 :(得分:0)

对于需要更改的swift 2:

^(?:|[0-2]\\d\\d|3[0-5]\\d|360)\\/(?:|[0-2]\\d|30)$