Python regex for integer?

后端 未结 4 969
面向向阳花
面向向阳花 2020-12-09 15:35

I\'m learning regex and I would like to use a regular expression in Python to define only integers - whole numbers but not decimals.

I could make one that only allow

4条回答
  •  情书的邮戳
    2020-12-09 16:04

    I prefer ^[-+]?([1-9]\d*|0)$ because ^[-+]?[0-9]+$ allows the string starting with 0.

    RE_INT = re.compile(r'^[-+]?([1-9]\d*|0)$')
    
    
    class TestRE(unittest.TestCase):
        def test_int(self):
            self.assertFalse(RE_INT.match('+'))
            self.assertFalse(RE_INT.match('-'))
    
            self.assertTrue(RE_INT.match('1'))
            self.assertTrue(RE_INT.match('+1'))
            self.assertTrue(RE_INT.match('-1'))
            self.assertTrue(RE_INT.match('0'))
            self.assertTrue(RE_INT.match('+0'))
            self.assertTrue(RE_INT.match('-0'))
    
            self.assertTrue(RE_INT.match('11'))
            self.assertFalse(RE_INT.match('00'))
            self.assertFalse(RE_INT.match('01'))
            self.assertTrue(RE_INT.match('+11'))
            self.assertFalse(RE_INT.match('+00'))
            self.assertFalse(RE_INT.match('+01'))
            self.assertTrue(RE_INT.match('-11'))
            self.assertFalse(RE_INT.match('-00'))
            self.assertFalse(RE_INT.match('-01'))
    
            self.assertTrue(RE_INT.match('1234567890'))
            self.assertTrue(RE_INT.match('+1234567890'))
            self.assertTrue(RE_INT.match('-1234567890'))
    

提交回复
热议问题