Skip to content

Commit 4512a02

Browse files
committed
Update support note in 9.15 (Catastrophic backtracking)
Refs: https://bugs.chromium.org/p/v8/issues/detail?id=10765 Refs: https://bugs.chromium.org/p/v8/issues/detail?id=11021 Can be tested in the Goole Chrome Beta, Dev, and Canary branches now, as well as in the Node.js v8-canary branch.
1 parent 633db6f commit 4512a02

File tree

1 file changed

+4
-4
lines changed
  • 9-regular-expressions/15-regexp-catastrophic-backtracking

1 file changed

+4
-4
lines changed

9-regular-expressions/15-regexp-catastrophic-backtracking/article.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ let str = "An input string that takes a long time or even makes this regexp hang
3737
alert( regexp.test(str) );
3838
```
3939

40-
To be fair, let's note that some regular expression engines can handle such a search effectively. But most of them can't. Browser engines usually hang.
40+
To be fair, let's note that some regular expression engines can handle such a search effectively. But most of them can't. Browser engines usually hang (Google Chrome can handle such a search since version 88 due to a new experimental regular expression engine shipped in V8, JavaScript engine for browsers and Node.js).
4141

4242
## Simplified example
4343

@@ -74,7 +74,7 @@ Here's what the regexp engine does:
7474
```
7575
7676
After all digits are consumed, `pattern:\d+` is considered found (as `match:123456789`).
77-
77+
7878
Then the star quantifier `pattern:(\d+)*` applies. But there are no more digits in the text, so the star doesn't give anything.
7979
8080
The next character in the pattern is the string end `pattern:$`. But in the text we have `subject:z` instead, so there's no match:
@@ -220,7 +220,7 @@ The time needed to try a lot of (actually most of) combinations is now saved.
220220

221221
## Preventing backtracking
222222

223-
It's not always convenient to rewrite a regexp though. In the example above it was easy, but it's not always obvious how to do it.
223+
It's not always convenient to rewrite a regexp though. In the example above it was easy, but it's not always obvious how to do it.
224224

225225
Besides, a rewritten regexp is usually more complex, and that's not good. Regexps are complex enough without extra efforts.
226226

@@ -246,7 +246,7 @@ Possessive quantifiers are in fact simpler than "regular" ones. They just match
246246

247247
There are also so-called "atomic capturing groups" - a way to disable backtracking inside parentheses.
248248

249-
...But the bad news is that, unfortunately, in JavaScript they are not supported.
249+
...But the bad news is that, unfortunately, in JavaScript they are not supported.
250250

251251
We can emulate them though using a "lookahead transform".
252252

0 commit comments

Comments
 (0)