@@ -3,6 +3,7 @@ if (typeof exports !== "undefined") {
3
3
var testFail = require ( "./driver.js" ) . testFail
4
4
}
5
5
6
+ // Duplicate named capture groups
6
7
test ( "/(?<x>a)|(?<x>b)/" , { } , { ecmaVersion : 2025 } )
7
8
testFail ( "/(?<x>a)|(?<x>b)/" , "Invalid regular expression: /(?<x>a)|(?<x>b)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2024 } )
8
9
testFail ( "/(?<x>a)(?<x>b)/" , "Invalid regular expression: /(?<x>a)(?<x>b)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
@@ -16,3 +17,31 @@ testFail("/(?<x>a)|(?<x>b)(?<x>c)/", "Invalid regular expression: /(?<x>a)|(?<x>
16
17
testFail ( "/(?:(?<x>a)|(?<x>b))(?<x>c)/" , "Invalid regular expression: /(?:(?<x>a)|(?<x>b))(?<x>c)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
17
18
testFail ( "/(?<x>a)(?:(?<x>b)|(?<x>c))/" , "Invalid regular expression: /(?<x>a)(?:(?<x>b)|(?<x>c))/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
18
19
testFail ( "/(?:(?:(?<x>a)|(?<x>b))|(?:))(?<x>c)/" , "Invalid regular expression: /(?:(?:(?<x>a)|(?<x>b))|(?:))(?<x>c)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
20
+
21
+ // Modifiers
22
+ test ( "/(?i-m:p)?/" , { } , { ecmaVersion : 2025 } )
23
+ test ( "/(?i-m:p)?/u" , { } , { ecmaVersion : 2025 } )
24
+ test ( "/(?ims:p)?/" , { } , { ecmaVersion : 2025 } )
25
+ test ( "/(?ims-:p)?/" , { } , { ecmaVersion : 2025 } )
26
+ test ( "/(?-ims:p)?/" , { } , { ecmaVersion : 2025 } )
27
+ test ( "/(?:no modifiers)?/" , { } , { ecmaVersion : 2025 } )
28
+ // In ES2024
29
+ testFail ( "/(?i-m:p)?/" , "Invalid regular expression: /(?i-m:p)?/: Invalid group (1:1)" , { ecmaVersion : 2024 } )
30
+ testFail ( "/(?ims:p)?/" , "Invalid regular expression: /(?ims:p)?/: Invalid group (1:1)" , { ecmaVersion : 2024 } )
31
+ testFail ( "/(?ims-:p)?/" , "Invalid regular expression: /(?ims-:p)?/: Invalid group (1:1)" , { ecmaVersion : 2024 } )
32
+ testFail ( "/(?-ims:p)?/" , "Invalid regular expression: /(?-ims:p)?/: Invalid group (1:1)" , { ecmaVersion : 2024 } )
33
+ // It is a Syntax Error if the first modifiers and the second modifiers are both empty.
34
+ testFail ( "/(?-:p)?/" , "Invalid regular expression: /(?-:p)?/: Invalid regular expression modifiers (1:1)" , { ecmaVersion : 2025 } )
35
+ // It is a Syntax Error if the first modifiers contains the same code point more than once.
36
+ testFail ( "/(?ii:p)?/" , "Invalid regular expression: /(?ii:p)?/: Duplicate regular expression modifiers (1:1)" , { ecmaVersion : 2025 } )
37
+ // It is a Syntax Error if the second modifiers contains the same code point more than once.
38
+ testFail ( "/(?-ii:p)?/" , "Invalid regular expression: /(?-ii:p)?/: Duplicate regular expression modifiers (1:1)" , { ecmaVersion : 2025 } )
39
+ testFail ( "/(?i-mm:p)?/" , "Invalid regular expression: /(?i-mm:p)?/: Duplicate regular expression modifiers (1:1)" , { ecmaVersion : 2025 } )
40
+ // It is a Syntax Error if any code point in the first modifiers is also contained in the second modifiers.
41
+ testFail ( "/(?i-i:p)?/" , "Invalid regular expression: /(?i-i:p)?/: Duplicate regular expression modifiers (1:1)" , { ecmaVersion : 2025 } )
42
+ // Not modifiers
43
+ testFail ( "/(?u:p)?/" , "Invalid regular expression: /(?u:p)?/: Invalid group (1:1)" , { ecmaVersion : 2025 } )
44
+ testFail ( "/(?u-:p)?/" , "Invalid regular expression: /(?u-:p)?/: Invalid group (1:1)" , { ecmaVersion : 2025 } )
45
+ testFail ( "/(?u-i:p)?/" , "Invalid regular expression: /(?u-i:p)?/: Invalid group (1:1)" , { ecmaVersion : 2025 } )
46
+ testFail ( "/(?-u:p)?/" , "Invalid regular expression: /(?-u:p)?/: Invalid group (1:1)" , { ecmaVersion : 2025 } )
47
+ testFail ( "/(?i-u:p)?/" , "Invalid regular expression: /(?i-u:p)?/: Invalid group (1:1)" , { ecmaVersion : 2025 } )
0 commit comments