Regex, чтобы найти число в строке - PullRequest
18 голосов
/ 03 апреля 2009

У меня есть строка, которая может содержать или не содержать число из 4 или 5 цифр. Я ищу регулярное выражение, которое может обнаружить, если строка действительно имеет такое число.

Ответы [ 7 ]

19 голосов
/ 03 апреля 2009

Надежный, чтобы избежать более длинных чисел будет:

([^\d]|^)\d{4,5}([^\d]|$)

Я предполагаю, что вы не хотите допускать запятую после тысячи цифр? Если вы это сделаете, то:

([^\d]|^)\d{1,2},\d{3}([^\d]|$)
5 голосов
/ 03 апреля 2009

Возможно

\d{4,5}

4 голосов
/ 03 апреля 2009

\ d {4,5} также найдет строки с 6-значными числами - я не знаю, является ли это проблемой или нет. Возможно, вы захотите сделать что-то вроде этого:

([^ \ d] + | ^) \ {d} 4,5 [^ \ d]

1 голос
/ 03 апреля 2009

Простых \d{4,5} будет достаточно.

0 голосов
/ 21 февраля 2019

Вы также можете использовать отрицательные упущения и упущения, чтобы сделать это:

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

Ищет 4-5 цифр, которым не предшествуют и не следуют другие цифры.

Это дает дополнительное преимущество, заключающееся в сопоставлении 4-5-значного числа в строках, например, например. asdsad1as12316asd, которые содержат более короткие числа. Недостатком является сопоставление всех 4-5-значных чисел в строке, что может быть не тем, что нужно.

0 голосов
/ 21 февраля 2019

Это sudocode, не копируйте и не вставляйте его, это поможет при проверке строки, содержит ли она числа или нет.

 if(str.matches(".*\\d+.*")) 
   print "contains numbers ";
 else 
   Print "doesn't contain numbers ";
0 голосов
/ 03 апреля 2009

.NET? Тогда это [0-9]{4,5}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...