diff --git a/django/contrib/localflavor/il/__init__.py b/django/contrib/localflavor/il/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/django/contrib/localflavor/il/forms.py b/django/contrib/localflavor/il/forms.py
new file mode 100644
index 0000000..f6a40a3
--- /dev/null
+++ b/django/contrib/localflavor/il/forms.py
@@ -0,0 +1,52 @@
+"""
+Israeli-specific form helpers
+"""
+import re
+
+from django.core.exceptions import ValidationError
+from django.forms.fields import RegexField, Field, EMPTY_VALUES
+from django.utils.checksums import luhn
+from django.utils.translation import ugettext_lazy as _
+
+
+id_number_re = re.compile(r'^(?P<number>\d{1,8})(?P<check>\d)$')
+
+class ILPostalCodeField(RegexField):
+    """
+    A form field that validates its input as an Israeli postal code.
+    Valid form is XXXXX where X represents integer.
+    """
+
+    default_error_messages = {
+        'invalid': _(u'Enter a postal code in the format XXXXX'),
+    }
+
+    def __init__(self, *args, **kwargs):
+        super(ILPostalCodeField, self).__init__(r'^\d{5}$', *args, **kwargs)
+
+    def clean(self, value):
+        return super(ILPostalCodeField, self).clean(value.replace(" ", ""))
+
+
+class ILIDNumberField(Field):
+    """
+    A form field that validates its input as an Israeli identification number.
+    Valid form is per the Israeli ID specification.
+    """
+
+    default_error_messages = {
+        'invalid': _(u'Enter a valid ID number.'),
+    }
+
+    def clean(self, value):
+        value = super(ILIDNumberField, self).clean(value)
+
+        if value in EMPTY_VALUES:
+            return u''
+
+        match = id_number_re.match(value)
+        if not match:
+            raise ValidationError(self.error_messages['invalid'])
+        if not luhn(value):
+            raise ValidationError(self.error_messages['invalid'])
+        return value
diff --git a/docs/ref/contrib/localflavor.txt b/docs/ref/contrib/localflavor.txt
index ae81248..ea14d25 100644
--- a/docs/ref/contrib/localflavor.txt
+++ b/docs/ref/contrib/localflavor.txt
@@ -51,6 +51,7 @@ Countries currently supported by :mod:`~django.contrib.localflavor` are:
     * India_
     * Indonesia_
     * Ireland_
+    * Israel_
     * Italy_
     * Japan_
     * Kuwait_
@@ -99,6 +100,7 @@ Here's an example of how to use them::
 .. _India: `India (in\_)`_
 .. _Indonesia: `Indonesia (id)`_
 .. _Ireland: `Ireland (ie)`_
+.. _Israel: `Israel (il)`_
 .. _Italy: `Italy (it)`_
 .. _Japan: `Japan (jp)`_
 .. _Kuwait: `Kuwait (kw)`_
@@ -446,6 +448,19 @@ Indonesia (``id``)
 
 .. _NIK: http://en.wikipedia.org/wiki/Indonesian_identity_card
 
+Israel (``il``)
+===============
+
+.. class: il.forms.ILPostalCodeField
+
+    A form field that validates its input as an Israeli postal code. A valid
+    form is XXXXX where X represents integer.
+
+.. class:: il.forms.ILIDNumberField
+
+    A form field that validates its input as an Israeli identification number.
+    Valid form is per the Israeli ID specification.
+
 Italy (``it``)
 ==============
 
diff --git a/tests/regressiontests/forms/localflavor/il.py b/tests/regressiontests/forms/localflavor/il.py
new file mode 100644
index 0000000..a61a23a
--- /dev/null
+++ b/tests/regressiontests/forms/localflavor/il.py
@@ -0,0 +1,46 @@
+from django.contrib.localflavor.il.forms import (ILPostalCodeField,
+    ILIDNumberField)
+from django.core.exceptions import ValidationError
+from django.utils.unittest import TestCase
+
+
+class IsraelLocalFlavorTests(TestCase):
+    def test_postal_code_field(self):
+        f = ILPostalCodeField()
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a postal code in the format XXXXX",
+            f.clean, "84545x"
+        )
+        self.assertEqual(f.clean("69973"), "69973")
+        self.assertEqual(f.clean("699 73"), "69973")
+        self.assertEqual(f.clean("12345"), "12345")
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a postal code in the format XXXXX",
+            f.clean, "123456"
+        )
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a postal code in the format XXXXX",
+            f.clean, "1234"
+        )
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a postal code in the format XXXXX",
+            f.clean, "123 4"
+        )
+
+    def test_id_number_field(self):
+        f = ILIDNumberField()
+        self.assertEqual(f.clean("39337423"), "39337423")
+        self.assertEqual(f.clean("039337423"), "039337423")
+        self.assertEqual(f.clean("0091"), "0091")
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a valid ID number.",
+            f.clean, "123456789"
+        )
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a valid ID number.",
+            f.clean, "012346578"
+        )
+        self.assertRaisesRegexp(ValidationError,
+            "Enter a valid ID number.",
+            f.clean, "0001"
+        )
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index fb41501..635a989 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -17,6 +17,7 @@ from localflavor.fr import tests as localflavor_fr_tests
 from localflavor.generic import tests as localflavor_generic_tests
 from localflavor.id import tests as localflavor_id_tests
 from localflavor.ie import tests as localflavor_ie_tests
+from localflavor.il import IsraelLocalFlavorTests
 from localflavor.is_ import tests as localflavor_is_tests
 from localflavor.it import tests as localflavor_it_tests
 from localflavor.jp import tests as localflavor_jp_tests
