正则表达式中的算术

时间:2017-08-30 08:58:08

标签: regex

我想用正则表达式验证这些值:

3.5 inch - 4.0 inch
4.0 inch - 4.5 inch
4.5 inch - 5.0 inch
5.5 inch - 6.0 inch
More than 6.0 inch
Less than 3.5 inch
Unknown

我已经为此编写了上述正则表达式:

(^3\.5\sinch\s-\s4\.0\sinch$)|(^4\.0\sinch\s-\s4\.5\sinch$)|(^4\.5\sinch\s-\s5\.0\sinch$)|(^5\.5\sinch\s-\s6\.0\sinch$)|(^More\sthan\s6\.0\sinch|Less\sthan\s3\.5\sinch$)|(^Unknown$)

但我发现这很长。有没有办法缩短我的条件的代码?

顺便说一下,这个值应该只匹配上面的条件。除此之外的任何其他值都是错误的,例如.4.5英寸 - 6.0英寸

1 个答案:

答案 0 :(得分:0)

有人建议将正则表达式缩短一点:

(^(?:(?:^[3-5].[05]\sinch\s-\s[4-6].[05])|(?:More\sthan\s6\.0|Less\sthan\s3.5))\sinch$)|(^Unknown$)

解释

  • (^ ... \sinch$)sinch完成的事情。
  • (?:(?:^[3-5].[05]\sinch\s-\s[4-6].[05])第一个非匹配组检查范围[3.0,6.5]中的数字。
  • (?:More\sthan\s6\.0|Less\sthan\s3.5))\sinch$)第二个非匹配组检查 6.0以上少于3.5
  • (^Unknown$)未知案例。

Demo on regex101