我试图截断一些经度坐标而没有任何舍入问题。我认为replace()是最简单的方法。
我的正则表达式是正确的,但我显然没有正确使用替换。
这是我剥离的例子。我需要在第8个位置之后删除所有小数点
var truncRegex = /-?\d+?\.\d{8}/;
console.log('-81.82297519999997'.replace(truncRegex, '$1'));
正在发生的事情是替换()正在剥离比赛并留下我用" $ 1"前面的剩余部分。结果是: $一百九十九万九千九百九十七
答案 0 :(得分:1)
你有一些RegExp的答案。或者,如果您不关心舍入,您可以找到该点的索引并检索子字符串。
var str = '-81.82297519999997';
var truncated = str.substring(0, str.indexOf('.') + 9); // this will give you 8 fractions
console.log(truncated); // "-81.82297519"
答案 1 :(得分:0)
您必须在括号中添加matching groups以匹配您在替换时可以引用$1
的内容。例如:
var truncRegex = /(-?\d+?\.\d{8})\d*/;
console.log('-81.82297519999997'.replace(truncRegex, '$1'));
replace()
函数根据正则表达式替换它匹配的所有内容。您的代码只需将-DD.DDDDDDDD
替换为' $ 1'字符串。
您仍然可以使用自己提供的表达式,但必须使用match
,而不是replace
,例如:
var truncRegex = /-?\d+?\.\d{8}/;
console.log('-81.82297519999997'.match(truncRegex)[0]);
答案 2 :(得分:0)
var s = '81.82297519999997';
// Returns "-81.82297519"
s.replace(/(-?\d+\.\d{8})\d*/, '$1');
答案 3 :(得分:0)
(-?\d+?\.\d{8})|.*
试试这个。$1
。见。演示。
https://regex101.com/r/eZ0yP4/17
var re = /(-?\d+?\.\d{8})|.*/mg;
var str = '-81.82297519999997';
var subst = '$1';
var result = str.replace(re, subst);