正则表达式找到最长的比赛

时间:2014-12-15 05:38:13

标签: php regex

我有以下正则表达式:

(\b[1-9]+[.,][0-9]+[.,]?[0-9]+)#u

尝试匹配并提取185,000字符串:

ABBY TOP Colour : POLKA BLACK Weight : 0,18 Price : 185,000 Material : Kaos Semi-Fleece Size : Panjang / Length: 55 cm (depan), 72 (belakang)

和字符串20000 in:

"Jualan @20.000 "

然而这与20.000不匹配,它只匹配null。我还希望它匹配数字中间和最后一部分的3位数,所以我把它改为:

(\b[1-9]+[.,][0-9]{3}[.,]?[0-9]{3})#u

这是为了防止正则表达式匹配:

20,00

并且仅匹配20,00020,000,00020.000.000

任何想法?

2 个答案:

答案 0 :(得分:1)

正确的正则表达式应该是:

(?<![.,])\b([1-9]\d*(?:[.,]\d{3})*)\b(?![.,])

即。数字1-9后跟0或更多位数的句点或逗号。

RegEx Demo

答案 1 :(得分:0)

如何:

\d+(?:[,.]\d{3})+

一个很好的简单正则表达式。