$re = '/^
(?<integer>
(?<n1>
(?<n1nz>[一二三四五六七八九壹贰叁肆伍陆柒捌玖])
|(?<n1wz>[〇零])
)
|(?<n2>
(?<h2nz>
(?<n2nz>(?<n2z1>(?&n1nz)[十拾])(?&n1nz))
|[十拾](?&n1nz)
)
|(?<h2wz>
(?<n2wz>(?&n2z1))
|[十拾]
)
)
|(?<n3>
(?<n3nz>(?<n3z2>(?<h1nz>(?&n1nz)|两)[百佰])((?&n2nz)|(?&n1wz)(?&n1nz)))
|(?<n3wz>(?&n3z2)(?&n2wz)?)
)
|(?<n4>
(?<n4nz>(?<n4z3>(?&h1nz)[千仟])((?&n3nz)|(?&n1wz)((?&n2nz)|(?&n1nz))))
|(?<n4wz>
(?&n4z3)(?&n3wz)?
|(?&n4z3)(?&n1wz)(?&n2wz)
)
)
|(?<n5_7>
(?<n5_7nz>
(?<n5_7z4>(?<h1_3nz>(?&h1nz)|(?&h2nz)|(?&n3nz))[万萬])((?&n4nz)|(?&n1wz)((?&n3nz)|(?&n2nz)|(?&n1nz)))
|(?<n6_7z5_7>(?<h2_3wz>(?&h2wz)|(?&n3wz))[万萬])((?&n1wz)((?&n4nz)|(?&n3nz)|(?&n2nz)|(?&n1nz)))
)
|(?<n5_7wz>
(?&n5_7z4)((?&n4wz)|(?&n1wz)((?&n3wz)|(?&n2wz)))?
|(?&n6_7z5_7)((?&n1wz)((?&n4wz)|(?&n3wz)|(?&n2wz)))?
)
)
|(?<n8>
(?<n8nz>
(?<n8z4>(?&n4nz)[万萬])((?&n4nz)|(?&n1wz)((?&n3nz)|(?&n2nz)|(?&n1nz)))
|(?<n8z5_7>(?&n4wz)[万萬])(?&n1wz)((?&n4nz)|(?&n3nz)|(?&n2nz)|(?&n1nz))
)
|(?<n8wz>
(?&n8z4)((?&n4wz)|(?&n1wz)((?&n3wz)|(?&n2wz)))?
|(?&n8z5_7)((?&n1wz)((?&n4wz)|(?&n3wz)|(?&n2wz)))?
)
)
|(?<n9_16>
((?&h1_3nz)(?&n4nz)|(?&n5_7nz)(?&n8nz))[亿億]((?&n8)|(?&n1wz)((?&n5_7)|(?&n4)|(?&n3)|(?&n2)|(?&n1)))?
|((?&h2_3wz)(?&n4wz)|(?&n5_7wz)(?&n8wz))[亿億]((?&n1wz)((?&n8)|(?&n5_7)|(?&n4)|(?&n3)|(?&n2)|(?&n1)))?
)
)
(?<decimal>点
[〇一二三四五六七八九零壹贰叁肆伍陆柒捌玖]+
)?
$/mx';
$str = '三十四
↑True
三十四万
↑True
三十四万三百二十
↑False
三百四十五万零三百二十
↑True
三十四万零三百
↑True
二十万零一千
↑True
二十万零一百
↑True
二十万零一
二十万
二万零一十
二万零一百
二万零一百一十
二万一千一百一十一
两万零一
二百万零一
两千万零一
两千两百万零一
两千万零一十
两千万零一十二
两万零二千
两千万零两百
两千万零二十
两千万零二百二十
二千零二十一
二千零二十
两千万零二千零二十一
两千万零二十一
两千万零二百
两千万零两百二十一
两千万零两千两百二十
两千万零二千零二十
两千万零二千零二
两千万零二百零三
两千三百四十万三千二百三十
二百万
两千二百二十一万
两千两百万
两千两百一十万
两千三百四十一万
两千零二十
两千零二十万
两千零一十五
两千零一十五万
两千零三十万
两百一十万
一十万
十万
两千两百
两千两百万
两千两百二十万
两千三百四十五万
两千零一十一万
两百一十万
两百四十二万
两百零六万
二十一万
四百万
两百一十万
两百万零三百零一
↑True
三百四十万零一
↑True
四百五十六万零一十
↑True
五百零七万零三百
↑True
一千万零二十三
↑True
三百一十
↑True
一千两百万零三百一十
↑True
三百
一千万零三百
↑True
一千零一万零三百零一
↑True
一千两百三十万零一十
↑True
一千两百四十四万零二十三
↑True
一千
↑True
一千零四十
↑True
一千零四十
↑True
一千四百
↑True
一千零四万
↑True
一千零四十
一千零四十万
↑True
一千四百万
↑True
一千零四十五万零两百零四
↑True
一亿零两百万
↑True
一亿两千万
↑True
一亿零两千万
↑False
十亿零两千万
↑True
一亿零两百
↑True
一亿零二十
↑True
一亿零二十二
↑True
一万亿零二
↑True
九千八百七十六万五千四百三十二亿一千两百三十四万五千六百七十八
↑True
九千零七十六万零四百零二亿零两百零四万零六百零八
↑True
一千零
↑False
两千零零六
↑False
两千零六
↑True
九千零零七十六万零四百零二亿零两百零四万零六百零八
↑False
九千零六万零二亿零四万零八
↑True
九千零六万零二亿零
↑False
一千万亿零二点二
↑True
一千零二万亿零二
↑True
一千零二万億零二点两
↑False
一千零二万億零二点四
↑True
两万两千
↑True
两万零两千
↑False
两万零两百
↑True
两亿零五千万
↑False
两亿零五百万
↑True
一百
↑True
九千
↑True
两千零两百
↑False
五百万零四千三百
↑True
五百万四千三百
↑False
十万零一千亿四千万零四千
↑False
十万零一千亿零四千万零四千
↑True
十万零一千亿
↑True
十万零四千零四十
两千两百
↑True
二百零六十
↑False
二百五十
↑True
二百五十七
↑True
二百零八
↑True
二
↑True
两
↑False
一十
↑True
二十
↑True
十五
↑True
一十五
↑True
二十五
↑True
三十四
↑True
两百
↑True
三百四十
↑True
四百五十六
↑True
五百零七
↑True
一千
↑True
一千零一
↑True
一千零四十
↑True
一千零四十五
↑True
一千两百
↑True
一千两百三十
↑True
一千两百四十四
↑True
两千六百八十万零一百
↑True
两千六百八十万零一千
↑True
两千六百八十万一千
↑False
两千六百零八万一千
↑True
二万
↑True
两万
↑True
二十万
↑True
十五万
↑True
三十四万
↑True
两百万
↑True
三百四十万
↑True
四百五十六万
↑True
五百零七万
↑True
一千万
↑True
一千两百万
↑True
一千零一万
↑True
一千两百三十万
↑True
一千两百四十四万
↑True
一千零四十
↑Tru
一千万
↑Truee
一千四百万
↑Truee
一千零四万
↑Truee
一千零四十
↑True
一千零四十万
↑True
一千零四十五
↑True
一千零四十五万
↑True
二万零一
↑True
两万零三百
↑True
二十
↑True
二十万
↑True
两百万
两千万
二万
十五万零二十三
↑True
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php