javascript - 正则表达式仅获取 javascript 中的最后 N 个数字
问题描述
我正在尝试为这个字符串生成一个正则表达式:
- case1:test-123456789 应该得到 56789
- case2: test-1234-123456789 应该得到 56789
- case3:test-12345 应该失败或不提供任何东西
我需要的是一种仅从 9 个数字中获取最后 5 个数字的方法
到目前为止,我这样做了:
case.match(/\d{5}$/)
它适用于前两种情况,但不适用于最后一种
解决方案
您可以使用
/\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);
}
}
推荐阅读
- flutter - Flutter 应用程序在构建 release-APK 时工作,但在通过 Google Play 商店提供时不工作
- java - 如何使用 Spring Boot 从 SQL Server 获取当前数据库时间
- freemarker - Apache freemarker 模板分配和比较值
- reactjs - 为什么状态变量数组内容不能在div中显示?
- c - 如何从 C 程序中的斐波那契数列中提取素数?
- javascript - 我添加了 JS 功能以防止用户在 datepicker 中插入无效日期。它正在工作,但错误警报框未关闭
- react-native - Firestore 不断加载旧的更改
- typeorm - 在 Typeorm With Repository 方法的 Where 子句中使用 OR 进行联接查询
- javascript - 如何使用 Javascript/PHP 从 Web 应用程序打开移动应用程序(Android 或 iOS)
- javascript - 通过使用外部框架,有没有办法在不知道道具本身的情况下让控制台中的事件始终等于 true?