#10858 closed bug (fixed)
css.js regular expressions are incomplete
Reported by: | gibson042 | Owned by: | gibson042 |
---|---|---|---|
Priority: | low | Milestone: | 1.7.2 |
Component: | css | Version: | 1.7.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
A review of pull request #610 revealed some flaws in css.js regular expressions with respect to CSS number values. They should be extended as follows in order to properly deal with explicit positives and non-integer reals:
rnumpx = /^[-+]?\d*(?:\d|\.\d+)(?:px)?$/i rnumnopx = /^[-+]?\d*(?:\d|\.\d+)(?!px)[^\d\s]+$/i
Test case: http://jsfiddle.net/7XGfE/
Change History (6)
comment:1 Changed 12 years ago by
Component: | unfiled → css |
---|---|
Milestone: | None → 1.7.2 |
Priority: | undecided → low |
Status: | new → open |
comment:2 Changed 12 years ago by
Performance analysis: http://jsperf.com/2011-11-23-regexp-complexity/2
I tested the decimal-rejecting expression against three decimal-accepting expressions. The net slowdown of .css(property)
was generally within the margin of error reported by jsperf, especially on the fastest of the three (1%).
Since the fastest pattern is also the shortest, I recommend implementing it immediately:
rnumnopx = /^-?\d*(?:\d|\.\d+)(?!px)[^\d\s]+$/i rnumpx = /^[-+]?\d*(?:\d|\.\d+)(?:px)?$/i
comment:3 Changed 12 years ago by
Owner: | set to mikesherov |
---|---|
Status: | open → assigned |
comment:4 Changed 12 years ago by
Owner: | changed from mikesherov to gibson042 |
---|
comment:6 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Fix #10858: CSS regexps recognize non-integer and explicit positive numbers.
Changeset: d6500cc8ded8d3d02e19a3ab831b6b9cf43e82ae
At first glance, this looks correct.