1

我想删除除浮动之外的所有内容:

string = "1 south african rand is 0.11044"

我这样做是这样的:

reg = /[^\d+.\d+]/g
console.log string.replace(reg, '')

那日志

10.11044

那是错误的,我只想要 xxxx.xxxxxx 部分。1 不是浮点数,所以它不应该是其中的一部分?

我应该怎么刷?

4

7 回答 7

4

试试这个

^((?!\d+\.\d+).)*

有关更多详细信息,请参阅此答案:正则表达式匹配不包含单词的行?

于 2013-04-16T09:49:51.920 回答
2

以下正则表达式应该为您匹配浮点数(对于提供的示例):

/(-?\d*\.\d+)/

取代:

console.log (string.replace(/(-?\d*\.\d+)/, ''));
于 2013-04-16T09:49:58.380 回答
1

我在下面的正则表达式中使用了正面的 (?<=..)

\.\d+(?<=\d)

使用这个正则表达式并用''替换下面的值。结果将是 1 23 33 3

1 23 33.2000 3.4445

希望能帮助到你

于 2013-04-16T09:51:11.913 回答
1
var reg = /\d+\.\d+/g
var str = "1 south african rand is 0.11044";
var onlyFloats = str.match(reg).join(" ");
console.log(onlyFloats)
于 2013-04-16T09:52:12.653 回答
0

尝试这个

string = "1 south african rand is 0.11044"
reg = /(\d+\.\d+)/g;
string.match(reg);
于 2013-04-16T09:52:36.533 回答
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]*))$
于 2021-05-02T00:12:30.673 回答
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);
}
于 2019-08-01T07:29:59.290 回答