如何以优化的方式从javascript中向后提取数字

如何以优化的方式从javascript中向后提取数字,javascript,Javascript,我必须从向后的10位数字中提取一个字符串。 用例是当我们选择一个手机号码时,它有时以国家代码作为前缀,有时我们只得到手机号码 假设电话号码是:+91-84040355236545 我必须从末尾提取数字,比如从5到最后10个degits,这样最终结果将是0355236545 我有一个使用string.substring方法的解决方案下面是一个使用子字符串的简单解决方案: 更简单的解决方案是使用切片: 使用函数和正则表达式的另一种解决方案: 我做了一个简单的基准测试,对于少量的数字,最好的解决方案是

我必须从向后的10位数字中提取一个字符串。 用例是当我们选择一个手机号码时,它有时以国家代码作为前缀,有时我们只得到手机号码

假设电话号码是:+91-84040355236545 我必须从末尾提取数字,比如从5到最后10个degits,这样最终结果将是0355236545


我有一个使用string.substring方法的解决方案

下面是一个使用子字符串的简单解决方案:

更简单的解决方案是使用切片:

使用函数和正则表达式的另一种解决方案:

我做了一个简单的基准测试,对于少量的数字,最好的解决方案是使用slice


如果您提供更多详细信息,我可以提供更具针对性的建议。

您可以使用以下方法尝试:


使用regex\d{10}$/\d{10}$/.exec'+91-84040355236545'[0]@joybanks我刚刚检查了你的rgx,它可以工作-哪一个?请补充问题并解释什么不适合你。也许你的解决方案已经是最优化的了。@WiktorStribiżew我已经有了字符串的解决方案。substring methodOP已经在使用此代码。我发布此答案时他没有。OP要求你给出最优化的解决方案,那么它是哪一个呢?我建议使用slice,因为它的简单性和性能,但我们对数据/应用程序上下文了解不多。
var number = "+91-84040355236545";
var lastTenDigitsNumber = number.substr(number.length - 10);
console.log(lastTenDigitsNumber);
var number = "+91-84040355236545";
console.log(number.slice(-10));
function extractTenDigits(number) {
  var rx = /(\d{10}$)/g;
  var arr = rx.exec(number);
  return arr[1]; 
}

var number = "+91-84040355236545";
console.log(extractTenDigits(number));
let str = "+91-84040355236545";
str.substr(str.length - 10  ,10);