OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 str = "FOUR \u817f GOOD, TWO \u817f BAD!"; | 118 str = "FOUR \u817f GOOD, TWO \u817f BAD!"; |
119 str = str.replace(/(FOUR|TWO) \u817f (GOOD|BAD)/g, | 119 str = str.replace(/(FOUR|TWO) \u817f (GOOD|BAD)/g, |
120 function(match, num_legs, likeability) { | 120 function(match, num_legs, likeability) { |
121 assertTrue(num_legs !== undefined); | 121 assertTrue(num_legs !== undefined); |
122 assertTrue(likeability !== undefined); | 122 assertTrue(likeability !== undefined); |
123 if (num_legs == "FOUR") assertTrue(likeability == "GOOD"); | 123 if (num_legs == "FOUR") assertTrue(likeability == "GOOD"); |
124 if (num_legs == "TWO") assertTrue(likeability == "BAD"); | 124 if (num_legs == "TWO") assertTrue(likeability == "BAD"); |
125 return match.length - 7; | 125 return match.length - 7; |
126 }); | 126 }); |
127 assertEquals("4, 2!", str); | 127 assertEquals("4, 2!", str); |
| 128 |
| 129 // Test zero-length matches that have non-zero-length sub-captures that do not |
| 130 // start at the match start position. |
| 131 str = "up up up up"; |
| 132 str = str.replace(/\b(?=u(p))/g, function(match, capture) { |
| 133 return capture.length; |
| 134 }); |
| 135 |
| 136 assertEquals("1up 1up 1up 1up", str); |
OLD | NEW |