REGEX:\ d不起作用

时间:2017-02-15 17:40:29

标签: javascript regex

我有一个文字:

Wheels – F/R_ Schwalbe TABLE TOP/Schwalbe Black Jack 26x2.2

正则表达式从该字符串解析轮子大小:

/.*Wheels.*(\d*)x/

但它不起作用。此外,当我从正则表达式中删除星号时,我将数字6作为群组匹配。

2 个答案:

答案 0 :(得分:3)

您需要在数字lazy instead of greedy之前设置.*

/.*Wheels.*?(\d*)x/

.*将贪婪地使用x以外的所有内容,而不会为以下\d*留下任何内容。由于*可以有效匹配零个字符,因此\d*的空匹配不是错误的结果。

通过添加?来生成一个惰性.*?表达式,它会尝试匹配尽可能少的字符,允许以下\d*匹配{{1}之前的所有数字}}

答案 1 :(得分:2)

你需要让你的正则表达式非贪婪,因为.*会消耗你的数字而\d*意味着零或不匹配

.*Wheels.*?(\d*)x 

.*?表示尽可能多地匹配尽可能多的字符,以阻止.*消耗您的数字

Follow this Demo for example

或者,如果Wheel之后没有数字,并且您的所需值与后续正则表达式相同,则可以提高效率

.*Wheels[^\d]*(\d*)x

其中[^\d]*表示匹配除数字

之外的任何内容