.NET 正则表达式从混合字符值中提取 1-4 位值

.NET regular expression to extract 1-4 digit value from mixed character value

我正在尝试为以下字符串完成 .NET 正则表达式:

Example 1. abc1234abc - 1234
Example 2. abc12345abc - no results
Example 3. abc1234abc12345 - 1234

我正在尝试从任何混合字符值中提取 1-4 位数字(1121231234),但不超过4 位数字(即。不是 12345)。

[0-9]{1,4} 模式产生:

Example 1. abc1234abc - 1234 (good)
Example 2. abc12345abc - 1234, (should return no results)
Example 3. abc1234abc12345 - 1234, 1234, 5 (should return ONLY 1234)

我错过了什么?感谢您的帮助,我对正则表达式非常陌生,在任何地方都找不到我要找的东西。我希望我的问题是有道理的。

您缺少检查号码是否包含更多数字的环视方法:

(?<!\d)\d{1,4}(?!\d)

或者(如果您只需要匹配常规数字,不包括印地语等中的所有 Uncide 数字):

(?<![0-9])[0-9]{1,4}(?![0-9])

regex demo

(?<!\d) 是一个负向后视,它检查下一个子模式之前是否没有其他子模式(在当前位置之前看,"looks behind"),(?!\d) 是一个负前瞻,确保当前位置后没有数字 ("looks ahead")。 Lookarounds 不消耗字符,它们只是检查然后 return true 或 false(因此允许或失败匹配),因此,您只会得到预期的匹配结果。

更多details on regex lookarounds at regular-expressions.info