我有一个字符串作为a1234b5。
我想获得1234(介于a和b5之间)。我尝试了以下方式
number.replace(/[^0-9\.]/g, '');
但它给了我12345.但我需要1234.如何在Javascript中实现这一点?
答案 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)
目前尚不清楚a
和b
是否始终是您正在使用的字符串的一部分;但如果你想“提取”数字,你可以使用:
var s = "a1234b5",
res = s.match(/[^\d](\d+)[^\d]/);
// res => ["a1234b", "1234"]
那么,你可以重新分配或做任何事情。根据您对replace
的使用,目前尚不清楚您的意图是什么。但是,如果您使用replace
将该字符串转换为[a-z]
字符内的数字,则可以使用:
s.replace(/[^\d](\d+)[^\d](.*)$/, "$1")
但是,假设比赛的第一个非数字字符在它之前没有任何内容。