2010-09-08 44 views
8

我们可以通过一个正则表达式来检测一个数是否是偶数?正则表达式来检查一个数是否为偶数

我在想,如果我们可以有一个正则表达式来做到这一点,而不是通常的%或位操作。

感谢答复:)

+3

的正则表达式操作字符串,但均匀度是数字的财产。字符串格式中的数字有哪些格式? – AakashM 2010-09-08 09:01:51

+13

请:只想知道这一点,不要这样做。原始整型(byte,short,int和long)用于存储数字。 BigInteger用于存储真正的大数字。字符串用于存储字符串。 – helios 2010-09-08 09:19:43

+0

面试问题,有人吗? – 2010-09-08 13:22:33

回答

21

由于已经给出了正确的答案,我会争辩说正则表达式不会是我的第一选择。

  • 如果该号码符合long范围,使用%
  • ,如果没有的话,你可以使用BigInteger.remainder(..),但也许检查上次char是否表示即使数字会更有效。
+6

另一个诀窍是检查最右边的数字是0或1这将是:(n&1)== 1.真的意思是奇数,否则,甚至 – 2010-09-08 12:05:47

54

你可以试试:

^-?\d*[02468]$ 

说明:

  • ^:启动锚。
  • -?:可选的负号。
  • \d*:零个或多个数字。
  • [02468]:字符类来匹配0 或2或4或6或8
  • $:尾锚
+1

最快和解释。荣誉。 – 2010-09-08 09:00:58

+4

不错,你没有忘记负值;) – 2010-09-08 14:51:21

1

当然,你只要检查最后一个数字是0/2/4/6/8

1

尝试这个,我不确定它是否与java中的语法相同:

^\d*(2|4|6|8|0)$ 
3

如果是字符串,只需检查是否endsWith(0) || endsWith(2) || ..返回true。如果是数字,那很简单。

相关问题