Closed Bug 1227906 Opened 9 years ago Closed 8 years ago

HTML `pattern` attribute should set `u` flag for regular expressions

Categories

(Core :: DOM: Core & HTML, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla46
Tracking Status
firefox46 --- fixed

People

(Reporter: mathias, Assigned: arai)

References

()

Details

(Keywords: dev-doc-complete, site-compat)

Attachments

(1 file)

As soon as support for the `u` flag is completed, it should be enabled for the HTML `pattern` attribute as well.

Spec: https://html.spec.whatwg.org/multipage/forms.html#the-pattern-attribute

“If an input element has a pattern attribute specified, and the attribute's value, when compiled as a JavaScript regular expression with only the "u" flag specified, compiles successfully, then the resulting regular expression is the element's compiled pattern regular expression. If the element has no such attribute, or if the value doesn't compile successfully, then the element has no compiled pattern regular expression.”
bug 1135377 should be sufficient for implementing this :)

Then, I have one concern.
RegExp pattern with unicode flag disallows extended patterns (see bug 1135377 comment #53 for example), and I wonder if it results in some webcompat issue.
for example, <input pattern="\A[A-Z]{3}"> will accept "ABCD" and rejects "BCDE", but when unicode flag is set, pattern compilation will fail because of \A and pattern check won't work, and accepts all input.

might it be better showing some warning when the pattern compilation fails due to unicode flag?
Depends on: 1135377
No longer depends on: 887016
about the extended patterns, following test doesn't work as expected because of escaped single-quote, that is not SyntaxCharacter and it's an invalid pattern.

https://dxr.mozilla.org/mozilla-central/rev/388bdc46ba51ee31da8b8abe977e0ca38d117434/dom/html/test/forms/test_pattern_attribute.html#174
>   // The same way, we want to escape the ' in the pattern.
>   element.pattern = "foo\\'bar";
>   element.value = "foo'bar";
>   checkValidPattern(element);
> 
>   // Check for 'i' flag disabled. Should be case sensitive.
>   element.value = "Foo";
>   checkInvalidPattern(element);

checkValidPattern there is passed, because no pattern match is performed, but next checkInvalidPattern fails with same reason.
(btw, I think that test is wrong. pattern should be "foo" for "Foo")

Similar case might exist on web.
in case disallowing extended pattern doesn't matter (not sure if this is already discussed), here's a patch.
if it matters, please reject this and let's think how we could avoid/reduce web compat issue :)

Almost green on try run: https://treeherder.mozilla.org/#/jobs?repo=try&revision=15f613007121
Assignee: nobody → arai.unmht
Attachment #8700667 - Flags: review?(jst)
Could you please file a spec bug about the possible backwards compatibility issue.
Thanks :)

reported here: https://github.com/whatwg/html/issues/439
I just noticed that SyntaxError is reported to Browser Console.
it should be better to report it to Web Console (maybe in separated bug)
See Also: → 1235159
Attachment #8700667 - Flags: review?(jst) → review+
https://hg.mozilla.org/mozilla-central/rev/3a3edb6725a6
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla46
A Stack Overflow user has suffered from this change: http://stackoverflow.com/q/36953775/5693076

Posted the site compatibility doc: https://www.fxsitecompat.com/en-CA/docs/2016/input-pattern-now-sets-u-flag-for-regular-expressions/

MDN docs may require a double check.
maybe we should describe more about the change in the warning message, with a link to MDN document?
See Also: → 1279467
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: