我有一个textarea,它有一个或多个看起来像这样的配对,
Lat = 38.7970308
Long = -100.8665928
如何使用Javascript提取数字(如果有,则包含负号)?我想要列出所有数字。
答案 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
答案 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");
}