首页 > 解决方案 > 正则表达式仅获取 javascript 中的最后 N 个数字

问题描述

我正在尝试为这个字符串生成一个正则表达式:

我需要的是一种仅从 9 个数字中获取最后 5 个数字的方法

到目前为止,我这样做了:

 case.match(/\d{5}$/)

它适用于前两种情况,但不适用于最后一种

标签: javascriptregex

解决方案


您可以使用

/\b\d{4}(\d{5})$/

请参阅正则表达式演示。获取第 1 组值。

细节

  • \b- 字边界(以确保数字块是 9 位长) - 如果字符串末尾的数字块可以包含更多,请删除\b
  • \d{4}- 四位数
  • (\d{5})- 第一组:五位数
  • $- 字符串结束。

JS 演示:

var strs = ['test-123456789','test-1234-123456789','test-12345'];
var rx = /\b\d{4}(\d{5})$/;
for (var s of strs) { 
  var m = s.match(rx);
  if (m) { 
     console.log(s, "=>", m[1]);
   } else {
     console.log("Fail for ", s);
   }
}


推荐阅读