我想除去这个刺痛中的所有浮动:
string = "1 south african rand is 0.11044"
我这样做:
reg = /[^\d+.\d+]/g
console.log string.replace(reg, '')
记录
10.11044
这是错误的,我只想要xxxx.xxxxx部分。 1不是浮点数,所以它不应该是它的一部分吗?
我应该如何挑战它?
答案 0 :(得分:4)
试试这个
^((?!\d+\.\d+).)*
有关详细信息,请参阅此答案:Regular expression to match a line that doesn't contain a word?
答案 1 :(得分:2)
以下正则表达式应该匹配浮动(对于提供的示例):
/(-?\d*\.\d+)/
替换:
console.log (string.replace(/(-?\d*\.\d+)/, ''));
答案 2 :(得分:1)
我在正则表达式
下面使用了正面看法(?&lt; = ..)\.\d+(?<=\d)
使用此正则表达式并将以下值替换为''。结果将是1 23 33 3
1 23 33.2000 3.4445
希望有所帮助
答案 3 :(得分:0)
var reg = /\d+\.\d+/g
var str = "1 south african rand is 0.11044";
var onlyFloats = str.match(reg).join(" ");
console.log(onlyFloats)
答案 4 :(得分:0)
试试这个
string = "1 south african rand is 0.11044"
reg = /(\d+\.\d+)/g;
string.match(reg);
答案 5 :(得分:0)
/**
* @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);
}
答案 6 :(得分:0)
我会使用这个正则表达式:
(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]*))$