繁体   English   中英

正则表达式从字符串中提取数字和点

[英]Regex to extract digits and dots from a string

我正在使用以下代码从字符串中提取版本号。 版本号是第一个仅由数字和点组成的匹配。 例如在字符串中:“GT-I9000M-user 2.25.31 FROYO UGKC1 release-keys”匹配将是:“2.25.31”字符串中的另一个例子:“1.24.661.1hbootpreupdate:13DelCache:1”匹配将是:“1.24.661.1”。

我目前的代码是:

if (preg_match('/[\d]+[\.][\d]+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

此代码仅适用于部分案例,但不适用于所有案例。 例如,在第一个例子中,它只返回:“2.25”而不是“2.25.31”。 在第二个例子中,它将返回“1.24”而不是“1.24.661.1”。

我是RegEx的新手,所以我很难搞清楚。

谢谢你的帮助。

if (preg_match('/\d+(?:\.\d+)+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

允许.x重复,它应该工作。

试试这个:

'/\d+(\.\d+)+/'

与你的不同之处在于它允许.\\d+部分重复,从而允许多个点。

要将软件版本号与一个/不带/多个点匹配,可以使用:

\d+(?:\.*\d*)*

(在此帖之前向作者致敬)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM