regex - 文本块中前 8 位数字的正则表达式,不包括大于 8 位的数字
问题描述
我需要检查电子邮件中的一段文本,以查找正好为 8 位长的数字,并且只返回第一个匹配项。
这是我的测试用例:
Test123456789 - 应该失败,因为 9 位数
测试23456789测试——通过
Test23456789 测试——通过
13456780测试——通过
Test0123456 -- 失败,因为 7 位数
电子邮件中的额外文字:我已附上您要求的信息。如果您有任何问题,请告诉我们。- 电子邮件中的额外文本应该无关紧要。
我试过:
.*(\d{8}).*
-匹配倍数
.*?(\d{8}).*
-只有一个匹配,但它也匹配一个9位数字
.*(?<!\d)\d{8}(?!\d).*
-我在另一个答案中找到,但它返回电子邮件中的所有文本,我只想要8位数字。
感谢您的任何指导!
解决方案
As the others have said, you can use negative look ahead and negative look behind, and remember to not include a g
flag or else you'll match every occurrence of the pattern:
(?<!\d)\d{8}(?!\d)
推荐阅读
- python - 如何将 csv 转换并格式化为包含标题名称的列表列表
- kotlin - 为什么 Kotlin 的 Number-class 缺少运算符?
- r - 如何将原始向量从 sqlQuery 转换为数据框中的单个字符串?
- mysql - 一大列还是许多小行?
- c# - 如何使用 Microsoft Graph API 从包含嵌套组的组中仅获取用户?
- julia - (Julia 1.x) 获取#undef 变量的类型
- django - Django prefetch_related 似乎无法按预期工作
- vue.js - 如何从 Vuex 操作中的 axios 函数返回错误消息以调度 catch(error)?
- laravel - subCategories 函数已定义,但我得到的只是调用未定义的方法 Illuminate\Database\Eloquent\Builder::subCategories()"
- iot - 是否有 Vorto Eclipse 模型导入器 API