如何用Regex按特定条件排除数字并提取符合要求的数字?
数字匹配提取需求与问题
匹配条件
- 排除单个数字2
- 排除单个数字4
- 排除4位数字
- 注:数字可出现在字符串任意位置(开头、中间、结尾),长度除4位外不限
示例文本与期望结果
| 文本 | 期望匹配结果 |
|---|---|
| HELLO123 | 123 |
| B4UGO | 无 |
| 1984 ANIMAL FARM 45 | 45 |
| GOT 2 GO | 无 |
| SOME OTHER 1000 | 无 |
| 22 AND 44 AND 1234567 | 22, 44, 1234567 |
| TEST567TRUE | 567 |
当前尝试与问题
我尝试用正则表达式 '\b(?!2\b|4\b|\d{4})\d+\b' 来解决,但存在两个问题:
- 该表达式要求数字必须独立(被空格包围),无法匹配嵌入在字母中间的数字(比如
HELLO123里的123) - 无法提取长度超过4位的数字(比如
1234567)
内容的提问来源于stack exchange,提问作者Alison LT
相关产品推荐
相关产品推荐

