Skip to content

Commit b86c625

Browse files
committed
for Regexp validator set html input tag 'pattern' attribute (used if novalidate not set on a form)
test that pattern shows up in the input field
1 parent aa4e043 commit b86c625

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/wtforms/validators.py

+1
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ def __init__(self, regex, flags=0, message=None):
341341
regex = re.compile(regex, flags)
342342
self.regex = regex
343343
self.message = message
344+
self.field_flags = {"pattern": regex.pattern}
344345

345346
def __call__(self, form, field, message=None):
346347
match = self.regex.match(field.data or "")

tests/validators/test_regexp.py

+19
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,29 @@ def test_regex_raises(re_pattern, re_flags, test_v, dummy_form, dummy_field):
4848
validator(dummy_form, dummy_field)
4949

5050

51+
def test_regexp_message_default(dummy_form, dummy_field, grab_error_message):
52+
"""
53+
Regexp validator should return default message
54+
"""
55+
validator = regexp("^a")
56+
dummy_field.data = "f"
57+
assert grab_error_message(validator, dummy_form, dummy_field) == "Invalid input."
58+
59+
5160
def test_regexp_message(dummy_form, dummy_field, grab_error_message):
5261
"""
5362
Regexp validator should return given message
5463
"""
5564
validator = regexp("^a", message="foo")
5665
dummy_field.data = "f"
5766
assert grab_error_message(validator, dummy_form, dummy_field) == "foo"
67+
68+
69+
def test_regexp_pattern_html(dummy_form, dummy_field):
70+
"""
71+
Regexp validator should return given message
72+
"""
73+
validator = regexp("^[a-zA-Z0-9]+$")
74+
dummy_field.data = "foo bar"
75+
76+
assert validator.field_flags == {"pattern": '^[a-zA-Z0-9]+$'}

0 commit comments

Comments
 (0)