Bug 266866
Summary: | Dash character in character range breaks <input> pattern regex | ||
---|---|---|---|
Product: | WebKit | Reporter: | Ian Timothy <webkit> |
Component: | Forms | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Major | CC: | ahmad.saleem792, akeerthi, annevk, cdumez, karlcow, msaboff, webkit-bug-importer, webkit, wenson_hsieh |
Priority: | P2 | Keywords: | BrowserCompat, InRadar |
Version: | Safari 17 | ||
Hardware: | Mac (Apple Silicon) | ||
OS: | macOS 14 | ||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=183361 |
Ian Timothy
OVERVIEW
When the regex of a <input> pattern contains a character range with a actual dash character (not a range operator), the validation for the form element is always true. Dash characters recognized as range operators are not an issue (like: [0-9]), only dash characters recognized as an actual character in a set (like: [0-9-]).
This is a regression because it works as expected on older versions.
Is similar to, if not same as:
https://github.com/GoogleChrome/chromium-dashboard/issues/3106
STEPS TO REPRODUCE
i = document.createElement('input');
i.value = 'asdf';
i.pattern = '^[0-9-]{4}$';
v1 = i.checkValidity(); // returns true instead of false
i.pattern = '^[0-9]{4}$';
v2 = i.checkValidity(); // returns false as expected
console.log(v1, v2);
ACTUAL RESULTS
Safari 17:
true - false
Safari 15:
false - false
EXPECTED RESULTS
false - false
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Karl Dubost
I wonder if it could be because of this change by Anne
https://searchfox.org/wubkat/diff/092303e2abb1e89254f64b301953ac0fbf36c681/Source/WebCore/html/BaseTextInputType.cpp#43
Radar WebKit Bug Importer
<rdar://problem/120106089>
Anne van Kesteren
Hey Ian, thank you for reporting this. This is an intentional change in behavior: see bug 251675.
You can fix this by escaping - as \\-, although if you set it from script you might need even more backslashes. I suspect \\\\-.
As such closing this as INVALID.