> For the complete documentation index, see [llms.txt](https://choubey.gitbook.io/javascript-interview-questions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://choubey.gitbook.io/javascript-interview-questions/question-6.md).

# Question 6

### Question

Can you explain how to use regular expressions with lookbehind assertions (`(?<...))`) in JavaScript?

### Answer

Regular expressions (regex) are powerful for finding and manipulating text, and `lookbehind assertions` add another layer of sophistication by allowing you to check for patterns *before* a specific match.

**The Basics:**

* Syntax: In JavaScript, lookbehind assertions use the pattern `(?<=...)`. The content within the parentheses (`...`) represents the pattern you want to look behind.
* Functionality: This assertion ensures that the main pattern (following the `(?<=...)`) is matched only if it's immediately preceded by the specified pattern in the lookbehind.

**Example:**

Let's say you want to find all instances of the word "match" but only when it follows a digit:

```javascript
const regex = /(?<=\d)match/; // Lookbehind for any digit followed by "match"
const text = "12 match, 34 match, abc";

const matches = text.match(regex);
console.log(matches); // Output: [" match", " match"]
```

**Explanation:**

* `(?<=\d)` is the lookbehind assertion. It ensures that there's a digit (`\d`) immediately before the word "match".
* `match` is the main pattern we're searching for.

**Key Points:**

* **Non-Capturing Groups:** Lookbehind assertions are non-capturing. They only help define the context, not capture the preceding text. Use parentheses to create capturing groups if you need to extract that information.
* **Lookbehind Length:** Be mindful of the length of the lookbehind pattern. It can affect performance, especially for large strings or complex patterns.

**Common Uses:**

* **Validating Input:** Check for specific sequences in user input (e.g., making sure a code starts with a certain character).
* **Data Extraction:** Extract information from text based on its surrounding context.
