正则表达式只获取javascript中的最后N个数字

Lid*_*dez 1 javascript regex

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

  • case1:test-123456789应该得到56789
  • case2:test-1234-123456789应该得到56789
  • case3:test-12345应该失败或者不给任何东西

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

到目前为止我这样做了:

 case.match(/\d{5}$/)
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*żew 7

你可以用

/\b\d{4}(\d{5})$/
Run Code Online (Sandbox Code Playgroud)

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

细节

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

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);
   }
}
Run Code Online (Sandbox Code Playgroud)