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

在Javascript中提取文本之间的数字?,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个字符串是a1234b5 我正在尝试获得1234(介于a和b5之间)。我试着用下面的方法 number.replace(/[^0-9\.]/g, ''); 但它给了我12345分。但我需要1234。如何在Javascript中实现这一点?您可以使用: var m = 'a1234b5'.match(/\d+/); if (m) console.log(m[0]); //=> "1234" 假设您想要的数字周围总是有字母,并且您只关心被字母包围的第一组数字,您可以使用以下方法

我有一个字符串是a1234b5

我正在尝试获得1234(介于a和b5之间)。我试着用下面的方法

number.replace(/[^0-9\.]/g, '');
但它给了我12345分。但我需要1234。如何在Javascript中实现这一点?

您可以使用:

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

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

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

我感觉数字实际上是十六进制的。我敦促您更新问题,提供比您提供的更多的信息(即上下文)。

稍微不同的方法

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

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

如果
a
为空=>
null


如果找到某些东西=>
[“1234”、“5243”、“523”、“3254”、“293”、“9823”、“32”、“542”、“565”、“43”]
不清楚
a
b
是否始终是您正在使用的字符串的一部分;但如果您想“提取”数字,您可以使用:

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

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

但是,这是假设匹配的第一个非数字字符之前没有任何内容。

您正在尝试使用replace?获取数字:是否总是
a
b
包围着你想要的数字?还有什么规则适用于我们不知道的文本?@AndrewMcGivery:我想他是在试图删除所有其他他不想要的字符。@sjkm但OP不想要所有的数字这将在没有匹配时抛出错误。现在修复它。我很感激所有的评论,但请理解这里强调使用正确的正则表达式。这仍然忽略了一个事实,即他想要在字母之间获得数字,它所做的只是返回它找到的第一个数字。这意味着,
1a2345b
将返回
1
,而不是
2345
。对我来说,这不是“正确”的正则表达式,而是“最简单”的正则表达式,适合任意解释。我不知道为什么有人对一个被接受的问题投了反对票。。。这些人应该是嫉妒的人!
s.replace(/[^\d](\d+)[^\d](.*)$/, "$1")