我讨厌正则表达式,希望有人能帮忙写一个与 preg_replace 一起使用的正则表达式。
我想要用 preg_replace 去除字符串中不需要的字符,只返回数字值。
字符串格式可能如下:
SOME TEXT £100
£100 SOME TEXT
SOME TEXT 100 SOME TEXT
非常感谢。
$NumericVal = preg_replace("/[^0-9]/","",$TextVariable);
方括号内的 ^ 表示除了下列字符之外的任何字符
编辑
移除了不必要的+
\D
呢?许多网络答案使用非数字而不是内置的“非数字”。 - nicorellius$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l);
此程序支持UTF-8编码,只允许使用A-Z a-z 0-9 łwóc等字符。
preg_replace('/[^0-9]/','',$text);
preg_match
部分正确,但对于 preg_replace
不正确。就像任何普通的替换一样,preg_replace
会将每个字符的出现次数替换为 [^0-9]
,然后继续搜索下一个字符。 - AndreKRacb100def
失败 - 解决方案是使用 /g
标志。这对于 JavaScript 是正确的,但在 PHP 中不是。 - Kobi试试这个:
preg_replace("/\D+/", "", "SOME TEXT £100")
你也可以使用preg_match
来获取第一个数字:
preg_match("/\d+/", "SOME TEXT £100", $matches);
$number = $matches[0];
1abc00
会发生什么? - BoltClock£1.00
怎么样? - Kobi