@@ -3,6 +3,7 @@ if (typeof exports !== "undefined") {
33 var testFail = require ( "./driver.js" ) . testFail
44}
55
6+ // Duplicate named capture groups
67test ( "/(?<x>a)|(?<x>b)/" , { } , { ecmaVersion : 2025 } )
78testFail ( "/(?<x>a)|(?<x>b)/" , "Invalid regular expression: /(?<x>a)|(?<x>b)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2024 } )
89testFail ( "/(?<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>
1617testFail ( "/(?:(?<x>a)|(?<x>b))(?<x>c)/" , "Invalid regular expression: /(?:(?<x>a)|(?<x>b))(?<x>c)/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
1718testFail ( "/(?<x>a)(?:(?<x>b)|(?<x>c))/" , "Invalid regular expression: /(?<x>a)(?:(?<x>b)|(?<x>c))/: Duplicate capture group name (1:1)" , { ecmaVersion : 2025 } )
1819testFail ( "/(?:(?:(?<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