#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 8 years ago by
| Component: | unfiled → css |
|---|---|
| Milestone: | None → 1.7.2 |
| Priority: | undecided → low |
| Status: | new → open |
comment:2 Changed 8 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 8 years ago by
| Owner: | set to mikesherov |
|---|---|
| Status: | open → assigned |
comment:4 Changed 8 years ago by
| Owner: | changed from mikesherov to gibson042 |
|---|
comment:6 Changed 8 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.