regex - 查找带有可选前导零但不以其他数字开头的数字
问题描述
我需要找到一个带有可选前导零但不以另一个数字开头或结尾的特定数字。
样品线:
"123456, 123456A, A123456, A123456A, 0123456, 9123456, 1234567, ABCD0000123456 or /123456"
我目前正在使用的正则表达式:
"0*?[^1-9]123456(?!\d)"
当前比赛:
123456
A123456
A123456
0123456
0000123456
/123456
如何避免123456
,A123456
和/123456
匹配(只想123456
从这些匹配)。A
或者ABCD
可以是除数字以外的任何其他字符!
期望的匹配:
123456
123456
123456
123456
0123456
0000123456
123456
什么是最好的正则表达式?
提前致谢
解决方案
您需要在模式之前删除[^1-9]
并使用(?<!\d)
否定的lookbehind 0*
:
(?<!\d)0*123456(?!\d)
请参阅正则表达式演示和正则表达式图:
细节
(?<!\d)
- 不允许紧靠左边的数字0*
- 零个或多个0
数字123456
- 一个特定的数字字符串(?!\d)
- 当前位置右侧不允许有数字。
推荐阅读
- azure-devops - 如何从查询结果工具栏菜单 VSTS 扩展访问查询?
- excel - 以条件格式将 xlExpression 与“And”一起使用
- rest - OpenAPI / Swagger Spec:如何指定整个示例请求正文?
- javascript - 如果使用格式化程序进行显示,如何对 bootstrap-vue 中的日期列进行排序?
- react-native - 如何在水平平面列表的末尾进行模糊处理?
- python - 在进行多处理时使用 yield 获取结果时遇到问题
- javascript - 如何在异步功能上修复页面不使用innerHTML更新单元格信息
- python - 如何去除这些 0 值而不去除以零结尾的非零值?
- cloudflare - 我可以使用 Cloudflare 从一个网站看起来像多个网站吗?
- c# - 删除后 EF 实体仍然是父集合的一部分