Regex, чтобы проверить, является ли число четным - PullRequest
8 голосов
/ 08 сентября 2010

Можем ли мы найти регулярное выражение для определения четности числа?

Мне было интересно, можем ли мы использовать регулярное выражение вместо обычных % или битовых операций.

Спасибо за ответы:)

Ответы [ 6 ]

54 голосов
/ 08 сентября 2010

Вы можете попробовать:

^-?\d*[02468]$

Объяснение:

  • ^: начать привязку.
  • -?: необязательный отрицательный знак.
  • \d*: ноль или более цифр.
  • [02468]: класс символов для соответствия 0 или 2 или 4 или 6 или 8
  • $: конечная привязка
21 голосов
/ 08 сентября 2010

Поскольку правильный ответ уже дан, я буду утверждать, что регулярное выражение не будет моим первым выбором для этого.

  • , если число соответствует диапазону long, используйте %
  • , если это не так, вы можете использовать BigInteger.remainder(..), но, возможно, будет эффективнее проверить, является ли последняя char четной цифрой.
3 голосов
/ 08 сентября 2010

Если это строка, просто проверьте, возвращает ли endsWith(0) || endsWith(2) || .. значение true. Если это число, это очень просто.

1 голос
/ 08 сентября 2010

Попробуйте, я не уверен, что это тот же синтаксис в Java:

^\d*(2|4|6|8|0)$
1 голос
/ 08 сентября 2010

Конечно, вы просто проверяете, является ли последний номер 0/2/4/6/8

0 голосов
/ 27 октября 2010

Никогда не используйте регулярные выражения для работы, которая может быть легко сделана иначе.

Я наткнулся на этот блог Microsoft, который говорит то же самое: http://blogs.msdn.com/b/bclteam/archive/2005/02/21/377575.aspx

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