2

我想从字符串中提取恰好 5 位数字。

如果我尝试

\d{5}

这适用于"12345"or "a12345a",但它也匹配我不想要"12345"的字符串。"123456"

我可以试试

\d{5}\D

但随后字符串"12345a"将在“a12345a”中匹配。有没有得到只是号码?

4

3 回答 3

2

要匹配正好是五位数的数字,即使它被字母包围,请使用正则表达式

(?<!\d)\d{5}(?!\d)

这匹配五个数字 ( \d{5}),它们既不在 ( (?<!\d)) 之前,也不在 ( ) 之后(?!\d)有数字。

字边界 ( \b) 在这里不起作用,因为它们不允许12345a12345a.

在regex101.com上查看演示。

于 2013-05-27T20:04:28.933 回答
1

(\d{5})[^a-zA-Z]是正确的方法。

(\d{5})正在捕获的是 5 个数字,并且[^a-zA-Z]表示下一个字符不能是字母。

编辑: 为了清楚起见:\b(\d{5})\b当您想要 5 位数字被边界包围时使用(令牌' , . ",当然还有空格。

于 2013-05-27T19:50:54.583 回答
0
/\d{5}[^\d]/

这匹配一个由五个数字组成的序列,后跟一个非数字字符。

于 2013-05-27T20:20:23.093 回答