提取十进制数列表

时间:2014-07-15 14:06:57

标签: javascript regex

我有一个textarea,它有一个或多个看起来像这样的配对,

Lat = 38.7970308 
Long = -100.8665928

如何使用Javascript提取数字(如果有,则包含负号)?我想要列出所有数字。

4 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

var s ='Lat = 38.7970308\n' + 
'Long = -100.8665928';

var m = s.match(/[+-]?(?:\d+(?:\.\d+)?|\.\d+)/g);
//=> ["38.7970308", "-100.8665928"]

答案 1 :(得分:0)

试试这个正则表达式:

[\+\-]?\d+.?\d+$

答案 2 :(得分:0)

/([+-]?(?:[0-9]+\.)?[0-9]+)/g

<强> http://regex101.com/r/mC0yO2/1

答案 3 :(得分:0)

您可以使用此模式基本上提取所有数字:

/-?\d+(?:\.\d+)?/g

如果您在字符串示例中想要成对提取这些数字,则需要使用捕获组:

/^Lat = (-?\d+(?:\.\d+)?)\s*?\r?\nLong = (-?\d+(?:\.\d+)?)\s*?$/mg

对于每个成对的对象,纬度位于捕获组1中,经度位于捕获组2中。

请注意,第二种模式考虑到文字字符串“Lat =”和“Long =”位于一行的开头,始终按此顺序排列,并且仅由换行符分隔。 (使用m修饰符,^表示“行的开头,$表示”行的结尾“)\s*?允许使用尾随空格对于每一行。

示例:

var yourString = "Lat = 38.7970308\nLong = -100.8665928";
var myRe = /^Lat = (-?\d+(?:\.\d+)?)\s*?\r?\nLong = (-?\d+(?:\.\d+)?)\s*?$/mg;
var m;

while ((m = myRe.exec(yourString)) !== null) {
  console.log(m[1] + "\t" + m[2]+ "\n\n");
}