【发布时间】:2021-12-01 11:21:03
【问题描述】:
我有一个程序从后面有Kč 或CZK 的链中选择一个金额。如何编辑表达式(模式)以检查 Kč 或 CZK 是否在数字前面?见 string1 和 string2:
$string='Rohlík 4,99 Kč 51235';
//$string1='Rohlík CZK 4,99 51235';
//$string2='Rohlík Kč4,99 51235';
$replace = [' ', '.'];
$string = str_replace($replace,"",$string);
$string = str_replace(',',".",$string);
/*Change?*/
$pattern = '/[0-9]*[.]?[0-9]*[Kč,CZK]/';
preg_match($pattern, $string, $matches); // => 4.99 Kč
$string = $matches;
$pattern = '/[0-9]*[.]?[0-9]*/';
preg_match($pattern, $string[0], $matches);
$price = $matches[0];
print_r($price); // => 4.99
【问题讨论】:
-
非捕获组:
(?: )和交替:|debuggex.com/r/RqjVlY2tm3ym8HYt -
[Kč,CZK]匹配其中一个字符,而不是单词,尝试:(Kč|CZK)。它匹配Kč或CZK。 -
“字符类”中列出的字符不应重复。
标签: php regex validation text-extraction alternation