是否可编写正则表达式匹配字符串中除首个外的所有重复小数点?
正则匹配除首个小数点外的所有小数点
支持变长后发断言的引擎方案(Python、ES2018+ JavaScript、Java 9+ 等适用)
直接使用以下正则即可精准匹配首个小数点之后出现的所有小数点:(?<=\..*)\.
测试验证
- 测试字符串
1.2:无匹配结果,符合“拒绝”要求 - 测试字符串
1..2:成功匹配第2个小数点 - 测试字符串
1.2.3:成功匹配第2个小数点 - 测试字符串
a.b.c.d:成功匹配第2、3个小数点
实现原理
(?<=\..*)\. 中(?<=)为正向零宽后发断言,要求当前匹配的小数点之前,已经出现过至少1个小数点,以此过滤掉第一个出现的小数点,仅匹配后续出现的所有小数点。
不支持变长后发断言的引擎方案(旧版JavaScript、Java 8及以下等适用)
如果运行环境不支持变长后发断言,可通过捕获组替换的方式实现清理多余小数点的需求:
匹配正则
^([^.]*\.)|\.
使用方法
执行全局替换时,将匹配结果替换为捕获组$1即可:首个小数点会被捕获组保留,后续所有小数点都会被替换为空。
内容的提问来源于stack exchange,提问作者Himanshu Rai
相关产品推荐
相关产品推荐

