【发布时间】:2021-02-04 12:52:49
【问题描述】:
我已经看到与我相关的 question,但我还有一个额外的条件要添加,我不知道如何处理。
\[(.*?)\]
现在这段代码将提取方括号内的所有内容,但我希望只提取数字。
假设我有以下表达式[+₪7.00],我希望只提取7.00 或7。
如何使用正则表达式仅从方括号中提取数字?
编辑:
这是我迄今为止尝试过的:
\[([^\d])\]
[^\d] 假设只从字符串中提取数字,但这在这里不起作用。
由于7.00中的点,它也会给我700而不是7
编辑:
//Add Addons & Prices
if($slug == "addon"){
$temp = explode(',', $value);
$group = [];
foreach($temp as $t){
echo $t;
$regex = "/\[[^][\d]*\K\d+(?:\.\d+)?(?=[^][]*])/";
$price = 0;
$str = $t;
if (preg_match_all($regex, $str, $matches)) {
foreach ($matches[0] as $match => $m) {
$price = $m;
}
}
echo $price;
echo '<br/>';
$g = [
'name' => $t,
'values' => [
[
'id' => 0,
'name' => $t,
'price' => $price
]
]
];
array_push($group, $g);
}
}
【问题讨论】:
-
能否请您显示您当前的正则表达式以查看问题所在?此外,还不清楚您想对
[+7.00 and 89]案例做什么。 -
@WiktorStribiżew 不应该期待这样的情况,只有一个数字。