我想删除除浮动之外的所有内容:
string = "1 south african rand is 0.11044"
我这样做是这样的:
reg = /[^\d+.\d+]/g
console.log string.replace(reg, '')
那日志
10.11044
那是错误的,我只想要 xxxx.xxxxxx 部分。1 不是浮点数,所以它不应该是其中的一部分?
我应该怎么刷?
我想删除除浮动之外的所有内容:
string = "1 south african rand is 0.11044"
我这样做是这样的:
reg = /[^\d+.\d+]/g
console.log string.replace(reg, '')
那日志
10.11044
那是错误的,我只想要 xxxx.xxxxxx 部分。1 不是浮点数,所以它不应该是其中的一部分?
我应该怎么刷?
以下正则表达式应该为您匹配浮点数(对于提供的示例):
/(-?\d*\.\d+)/
取代:
console.log (string.replace(/(-?\d*\.\d+)/, ''));
我在下面的正则表达式中使用了正面的 (?<=..)
\.\d+(?<=\d)
使用这个正则表达式并用''替换下面的值。结果将是 1 23 33 3
1 23 33.2000 3.4445
希望能帮助到你
var reg = /\d+\.\d+/g
var str = "1 south african rand is 0.11044";
var onlyFloats = str.match(reg).join(" ");
console.log(onlyFloats)
尝试这个
string = "1 south african rand is 0.11044"
reg = /(\d+\.\d+)/g;
string.match(reg);
我会使用这个正则表达式:
(0|([1-9][0-9]*))?\.(0|([1-9][0-9]*))
(0|([1-9][0-9]*))?
匹配可选整数部分,匹配\.
点,最后(0|([1-9][0-9]*))
匹配强制小数部分。它成功用于:
.5
0.5
0.0
0.1
0.5foo
31.41592
它失败了:
00.5
100
nice
2.
锚定版本:
^(0|([1-9][0-9]*))?\.(0|([1-9][0-9]*))$
/**
* @param $string
* @return string
*
* output
* a.a.a.a.a.a. => 0.0
* 1.1.1.1.1.1. => 1.11111
* 2a$2.45&.wer.4 => 22.454
*/
function stringToFlout($string) {
$parts = explode('.', $string);
for ($i = 0; $i < count($parts); $i++) {
$parts[$i] = preg_replace('/[^0-9]/', '', $parts[$i]);
}
$left = $parts[0];
if (empty($left))
$left = 0;
$float[] = $left;
unset($parts[0]);
$right = implode('', $parts);
if (empty($right))
$right = 0;
$float[] = $right;
return implode('.', $float);
}