Side navigation
#12112 closed bug (cantfix)
Opened July 20, 2012 10:28AM UTC
Closed July 20, 2012 12:52PM UTC
RegExp.$1 being changed unexpectedly by jQuery selector parsing
Reported by: | Ian Yang | Owned by: | |
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | 1.7.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
After performing a regular expression such as:
if ('foo bar'.match(/(f\\S+)/)) { // do something }
We can utilize RegExp.$1
to output whatever is caught in the regular expression. For example:
if ('foo bar'.match(/(f\\S+)/)) { alert(RegExp.$1); // alert "foo" }
But if there is a certain jQuery selector parsing before the RegExp.$1
, the RegExp.$1
might be changed unexpectedly. For example:
if ('foo bar'.match(/(f\\S+)/)) { $('div').addClass(RegExp.$1); // the added class become "div" instead of "foo" }
Attachments (0)
Change History (1)
Changed July 20, 2012 12:52PM UTC by comment:1
resolution: | → cantfix |
---|---|
status: | new → closed |
If you use RegExp global variables, you're gonna have a bad time. This isn't specific to jQuery or Sizzle, but a general problem with the RegExp globals and an excellent reason to avoid them. Any function you call can change them. They are not covered by the ECMA-262 standard, so you should not use them.