For example, to match the first slash after the domain name in the URL.
Intent: Only match
'.com/...' but not any
url = 'https://example.com/...'; [ url.match( /(?<!/)(?<slash>/)(?!k<slash>).../), // [A] url.match(/(?<!k<slash>)(?<slash>/)(?!k<slash>).../) // [B] ]
The above [A] returns the correct match, but [B] is the kind of expression I want (although it did not match any characters), that is, to use the
/ character only 1 time in the body of regex literals.
Is there a generalized form of expression similar to [B] (using capturing groups or the like) and using only regular expression literals (instead of using the constructor (
You can put a positive lookbehind after an optional character inside a negative lookahead. The lookbehind asserts 2 consecutive slashes (using a reference). This way the lookbehind tests the captured slash position and also the position before. Obviously, when it succeeds, the negative lookahead fails.
(feel free to use named captures)
or without captures: