Closed
Bug 92942
Opened 24 years ago
Closed 24 years ago
String.prototype.replace not ECMAScript Ed. 3 compliant
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
VERIFIED
INVALID
People
(Reporter: jim, Assigned: rogerl)
References
(
URL
)
Details
ECMA 262 Ed 3: states:
"15.5.4.11 String.prototype.replace (regexp, replaceValue)
If regexp is not an object whose [[Class]] property is "RegExp", it is replaced
with the result of the expression new
RegExp(regexp). "
JavaScript 1.5 does:
"aa$aa".replace("$","z") == "aazaa"
Compliant ECMAScript engines do:
"aa$aa".replace("$","z") == "aa$aaz"
Opera 5, and older JavaScript versions are Compliant in this respect, JScript
is also non-compliant.
Tested with Build ID 2001073103 also with "Netscape 6".
Updated•24 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 1•24 years ago
|
||
Jim, you are correct. I have added your example to the existing testcase
mozilla/js/tests/ecma_3/String/regress-83293.js
This is a duplicate of bug 83293. You will be cc'ed on that bug so you
can follow its progress until it gets fixed. Thank you for this report!
*** This bug has been marked as a duplicate of 83293 ***
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → DUPLICATE
Summary: String.prototype.replace not ECMAScript Ed. 3 Compliant → String.prototype.replace not ECMAScript Ed. 3 compliant
Comment 2•24 years ago
|
||
Marking Verified -
Status: RESOLVED → VERIFIED
OS: Windows 98 → All
Hardware: Other → All
Comment 3•24 years ago
|
||
From bug 83293:
------- Additional Comments From Jim Ley 2001-08-05 13:52 -------
I hate to say this, for fear of killing the fixes, but the quotation from the
ECMA-262 Ed. 3 is incorrect, that is one the one in the released final draft I
believe, the actual standard - My copy dated "09-02-00 14,32" (assumed Swiss
date so 2000-02-09) contains:
------------------------------------------------------------------------------
15.5.4.11 String.prototype.replace (searchValue, replaceValue)
Let string denote the result of converting the this value to a string.
If searchValue is a regular expression (an object whose [[Class]]
property is "RegExp"), do the following: If searchValue.global is
false, then search string for the first match of the regular
expression searchValue. If searchValue.global is true, then search
string for all matches of the regular expression searchValue. Do the
search in the same manner as in String.prototype.match, including the
update of searchValue.lastIndex. Let m be the number of left capturing
parentheses in searchValue (NCapturingParens as specified in
15.10.2.1).
If searchValue is not a regular expression, let searchString be
ToString(searchValue) and search string for the first occurrence of
searchString. Let m be 0.
------------------------------------------------------------------------------
This is different to the NN4.7 situation:
NN4.7 ECMAScript
javascript:alert("a$a".replace('$','Z')) 'a$aZ' 'aZa'
Jim.
Comment 4•24 years ago
|
||
Jim is correct to point out this change in the ECMAScript spec between
the Edition 3 "Final Draft" (October 1999) and the "Final Edition"
(December 1999). For a complete discussion, see bug 83293.
In the meantime, that makes this bug invalid, so I am reopening it
to give it that status -
Status: VERIFIED → REOPENED
Resolution: DUPLICATE → ---
Comment 5•24 years ago
|
||
Resolving as Invalid -
Status: REOPENED → RESOLVED
Closed: 24 years ago → 24 years ago
Resolution: --- → INVALID
You need to log in
before you can comment on or make changes to this bug.
Description
•