对象尺寸的正则表达式

时间:2016-10-22 01:13:55

标签: php regex

http://regexr.com/3eg8c

文本:

(18.8 x 25.7 x 1.8 cm)
10.787 x 8.031 x 1.339"
2.75 x 6.5 x 6.5 in
31 x 21.89 x 1.89 cm 
(18.8 x 25.7 x 1.8 cm)
10.787 x 8.031 x 1.339"
2.75  x  6.5  x  6.5 in
31x21.89x1.89 mm 

表达:

/(\d*\.?\d+) x (\d*\.?\d+)(?: x (\d*\.?\d+))\s*(cms?|in|inch|inches|mms?)\b/ig

目前匹配我的测试用例中的一些值,但我喜欢它:

  • 确保找到3个值(1x2x3)不多,不少。
  • 忽略数字之间的空格以及数字和单位。
  • 在捕获组中包含单位。

1 个答案:

答案 0 :(得分:2)

此更改将为您提供所需内容:

/^(?:[\(])?(\d*\.?\d+)\s*x\s*(\d*\.?\d+)\s*x\s*(\d*\.?\d+)\s*((?:cms?|in|inch|inches|mms?)\b|(?:[\"]))/igm

你可以在这里查看:
http://regexr.com/3eg8i

这是细分:

  1. 从字符串^开头(或行的开头,最后使用/ m修饰符)
  2. 允许(但不抓住(?:[\(])
  3. 找到一个数字(\d*\.?\d+)(int或float [带点])
  4. 拥有x字符,在\ s x \ s 之前和之后有(或没有)空格 - 这里支持多个空格
  5. 拥有任何支持的单位:
    5.1厘米,厘米,英寸,英寸,毫米,毫米 - 其次是单词边界
    (?:cms?|in|inch|inches|mms?)\b

    5.2拥有"字符|(?:[\"])