在Javascript中提取文本之间的数字?

时间:2014-06-04 20:21:09

标签: javascript jquery regex

我有一个字符串作为a1234b5。

我想获得1234(介于a和b5之间)。我尝试了以下方式

number.replace(/[^0-9\.]/g, '');

但它给了我12345.但我需要1234.如何在Javascript中实现这一点?

5 个答案:

答案 0 :(得分:2)

您可以使用:

var m = 'a1234b5'.match(/\d+/);
if (m)
   console.log(m[0]);
//=> "1234"

答案 1 :(得分:0)

假设您想要的数字周围总是有字母,并且您只关心被字母包围的第一组数字,您可以使用:

("abc123456def1234ghi123".match(/[^\d](\d+)[^\d]/) || []).pop()
// "123456"

答案 2 :(得分:0)

var number = 'a1234b5';
var firstMatch = number.match(/[0-9]+/);
var matches = number.match(/[0-9]+/g);
var without = matches.join('');
var withoutNum = Number(without);

console.log(firstMatch); // ["1234"]
console.log(matches); // ["1234","5"]
console.log(without); // "12345"
console.log(withoutNum); // 12345

我感觉number实际上是十六进制的。我建议您使用比您提供的更多信息(即上下文)更新问题。

答案 3 :(得分:0)

略有不同的方法

var a = "a1234b5243,523kmw3254n293f9823i32lia3un2al542n5j5j6j7k7j565h5h2ghb3bg43";
var b;

if ( typeof a != "undefined" )
{
    b = a.match( /[0-9]{2,}/g );
    console.log( b );
}
如果未设置a,则

无输出。

如果a为空=> null

如果找到某些东西=> ["1234", "5243", "523", "3254", "293", "9823", "32", "542", "565", "43"]

答案 4 :(得分:0)

目前尚不清楚ab是否始终是您正在使用的字符串的一部分;但如果你想“提取”数字,你可以使用:

var s = "a1234b5",
    res = s.match(/[^\d](\d+)[^\d]/);
// res => ["a1234b", "1234"]
那么,你可以重新分配或做任何事情。根据您对replace的使用,目前尚不清楚您的意图是什么。但是,如果您使用replace将该字符串转换为[a-z]字符内的数字,则可以使用:

s.replace(/[^\d](\d+)[^\d](.*)$/, "$1")

但是,假设比赛的第一个非数字字符在它之前没有任何内容。