Skip to content

Commit ed213e9

Browse files
duonglaiquangrbri
authored andcommitted
htmlunit/RegExpJsToJavaConverter: Char ranges following [] or [^] are broken
1 parent 5477608 commit ed213e9

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

src/main/java/org/htmlunit/javascript/regexp/RegExpJsToJavaConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ else if (']' == next) {
242242
// [^]
243243
tape_.move(-3);
244244
tape_.replace(3, "(?s:.)");
245+
insideCharClass_ = false;
245246
}
246247
else {
247248
tape_.move(-1);
@@ -251,6 +252,7 @@ else if (']' == next) {
251252
// []
252253
tape_.move(-2);
253254
tape_.replace(2, "(?!)");
255+
insideCharClass_ = false;
254256
}
255257
else {
256258
tape_.move(-1);

src/test/java/org/htmlunit/javascript/regexp/RegExpJsToJavaConverterTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,10 @@ public void charClass() {
191191
public void charClassOpenInside() {
192192
final RegExpJsToJavaConverter regExpJsToJavaConverter = new RegExpJsToJavaConverter();
193193

194-
final String in = "[af[g]";
195-
final String out = regExpJsToJavaConverter.convert(in);
196-
assertEquals("[af\\[g]", out);
194+
assertEquals("[af\\[g]", regExpJsToJavaConverter.convert("[af[g]"));
195+
assertEquals("(?!)[a][b]", regExpJsToJavaConverter.convert("[][a][b]"));
196+
assertEquals("[a](?s:.)[b]", regExpJsToJavaConverter.convert("[a][^][b]"));
197+
assertEquals("[a\\[b]c]", regExpJsToJavaConverter.convert("[a[b]c]"));
197198
}
198199

199200
/**

0 commit comments

Comments
 (0)