Clone a given regular expression in JavaScript

Last Updated : 8 Sep, 2026

A regular expression can be cloned in JavaScript by creating a new RegExp object with the same pattern and flags. Cloning is useful when you need a separate regular expression instance or want to create a copy with modified flags.

  • Use the RegExp constructor to create a new regular expression.
  • Use the source property to access the original pattern.
  • Use the flags property to preserve or modify the regular expression flags.

Approach: Using the RegExp Constructor

The RegExp constructor can create a clone of an existing regular expression using its pattern and flags.

Syntax:

new RegExp(regex.source, regex.flags);

Example: Cloning a Regular Expression

In this example, the user enters a regular expression pattern. When the Clone Regex button is clicked, a regular expression is created and then cloned with the same pattern and flags.

JavaScript
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0">

    <title>Clone a Regular Expression</title>
</head>

<body style="text-align: center">

    <p>Enter Regular Expression to Clone</p>

    <input type="text" id="data">

    <br><br>

    <button id="cloneBtn">Clone Regex</button>

    <p id="display"></p>

    <script>
        function cloneRegex(regex) {
            return new RegExp(
                regex.source,
                regex.flags
            );
        }

        document
            .getElementById("cloneBtn")
            .addEventListener("click", function () {

                const input =
                    document.getElementById("data").value;

                const regex = new RegExp(input, "i");

                const clonedRegex = cloneRegex(regex);

                document.getElementById("display").textContent =
                    "Cloned Regex: " + clonedRegex;
            });
    </script>

</body>

</html>

Output:

For the input:

https://facebook.com

For the input:

[a-zA-Z0-9_-]


Comment