ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ regex ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?
ਹਰ JavaScript ਰਨਟਾਈਮ ਇੱਕ ਮੂਲ ਨਿਯਮਿਤ ਸਮੀਕਰਨ ਇੰਜਣ ਲੈ ਕੇ ਆਉਂਦਾ ਹੈ — new RegExp(pattern, flags) ਤੁਹਾਡਾ ਪੈਟਰਨ ਕੰਪਾਈਲ ਕਰਦਾ ਹੈ, ਫਿਰ String.prototype.match, String.prototype.replace, ਅਤੇ RegExp.prototype.exec ਜਿਹੀਆਂ ਵਿਧੀਆਂ ਇਸਨੂੰ ਕਿਸੇ ਵੀ ਇਨਪੁੱਟ ਸਤਰ ਦੇ ਵਿਰੁੱਧ ਚਲਾਉਂਦੀਆਂ ਹਨ। ਇਹ ਟੈਸਟਰ ਉਸ ਇੰਜਣ ਨੂੰ UI ਵਿੱਚ ਲਪੇਟਦਾ ਹੈ ਤਾਂ ਜੋ ਤੁਸੀਂ ਬ੍ਰਾਊਜ਼ਰ ਤੋਂ ਬਾਹਰ ਗਏ ਬਿਨਾਂ ਪੈਟਰਨ ਸੰਪਾਦਿਤ, ਚਲਾ ਅਤੇ ਜਾਂਚ ਕਰ ਸਕੋ। ਤੁਸੀਂ ਜੋ ਵੀ ਟਾਈਪ ਕਰਦੇ ਹੋ — ਪੈਟਰਨ, ਫਲੈਗਜ਼, ਟੈਸਟ ਸਤਰ, ਜਾਂ ਬਦਲਾਵ — ਨੈੱਟਵਰਕ 'ਤੇ ਨਹੀਂ ਭੇਜਿਆ ਜਾਂਦਾ।
Regex ਟੈਸਟਰ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?
ਪਾਈਪਲਾਈਨ ਕੁਝ ਛੋਟੇ ਕਦਮਾਂ ਦੀ ਹੈ, ਜੋ ਸਭ ਕਲਾਇੰਟ-ਸਾਈਡ ਹਰ ਕੀਸਟ੍ਰੋਕ 'ਤੇ ਚੱਲਦੇ ਹਨ (ਟਾਈਪਿੰਗ ਸੁਚਾਰੂ ਰੱਖਣ ਲਈ 150 ms ਤੱਕ ਡੀਬਾਊਂਸਡ):
- ਤੁਹਾਡਾ ਪੈਟਰਨ ਬਾਡੀ ਉੱਪਰ ਇਨਪੁੱਟ ਤੋਂ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ (ਕੋਈ ਅਗਲੇ ਜਾਂ ਪਿਛਲੇ
/ਡਿਲੀਮੀਟਰ ਨਹੀਂ — ਉਹ ਸਜਾਵਟੀ ਹਨ)। ਚੁਣੀਆਂ ਗਈਆਂ ਫਲੈਗ ਪਿੱਲਾਂ ਇੱਕ ਫਲੈਗਜ਼ ਸਤਰ ਜਿਵੇਂgiਜਾਂgimsuyਵਿੱਚ ਜੋੜੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। new RegExp(patternBody, flags)ਪੈਟਰਨ ਨੂੰ ਕੰਪਾਈਲ ਕਰਦਾ ਹੈ। ਜੇ ਇੰਜਣ ਇੱਕSyntaxErrorਸੁੱਟਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ ਇੱਕ ਬਿਨਾਂ ਜੋੜੀ ਵਾਲਾ ਬਰੈਕਟ ਜਾਂ ਇੱਕ ਅਵੈਧ ਐਸਕੇਪ), ਤਾਂ ਸੁਨੇਹਾ ਟੈਸਟ ਸਤਰ ਤੋਂ ਉੱਪਰ ਰੈਂਡਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਮੈਚ ਸੂਚੀ ਸਾਫ਼ ਕਰ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। ਕੰਪਾਈਲ ਗਲਤੀ V8 / SpiderMonkey / JavaScriptCore ਤੋਂ ਅਸਲerr.messageਹੁੰਦੀ ਹੈ ਇਸ ਲਈ ਇਹ ਉਸ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ ਜੋ ਤੁਸੀਂ DevTools ਵਿੱਚ ਦੇਖੋਗੇ।- ਮੈਚ ਸੂਚੀ ਲਈ, ਟੈਸਟਰ ਹਮੇਸ਼ਾ ਇੱਕ ਸਿੰਥੈਟਿਕ global ਫਲੈਗ ਨਾਲ ਗਿਣਤੀ ਕਰਦਾ ਹੈ — ਇਸ ਲਈ ਭਾਵੇਂ ਤੁਸੀਂ
gਬੰਦ ਕਰ ਦਿਓ, ਸੂਚੀ ਫਿਰ ਵੀ ਹਰ ਮੈਚ ਦਿਖਾਉਂਦੀ ਹੈ। ਮਿਆਰੀ ਜ਼ੀਰੋ-ਚੌੜਾਈ-ਮੈਚ ਗਾਰਡ (if (m.index === rx.lastIndex) rx.lastIndex++) ਲੂਪ ਨੂੰ ਉਨ੍ਹਾਂ ਪੈਟਰਨਾਂ ਉੱਤੇ ਘੁੰਮਣ ਤੋਂ ਰੋਕਦਾ ਹੈ ਜੋ ਇੱਕ ਖਾਲੀ ਸਤਰ ਨਾਲ ਮੈਚ ਕਰਦੇ ਹਨ। ਰਿਪਲੇਸ ਮੋਡ ਤੁਹਾਡੇ ਅਸਲ ਫਲੈਗ ਸੈੱਟ ਦਾ ਸਨਮਾਨ ਕਰਦਾ ਹੈ ਇਸ ਲਈ$&ਉਸੇ ਤਰ੍ਹਾਂ ਵਿਹਾਰ ਕਰਦਾ ਹੈ ਜਿਵੇਂString.prototype.replace। - ਹਰ ਇਟਰੇਸ਼ਨ ਦੇ ਵਿਚਕਾਰ ਟੈਸਟਰ
performance.now() - startਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਅਤੇ ਇੱਕ ਵਾਰ 50 ms ਬੀਤ ਜਾਣ ਤੇ ਰੱਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹaਦੀ ਇੱਕ ਲੰਮੀ ਲੜੀ ਦੇ ਵਿਰੁੱਧ(a+)+$ਜਿਹੇ ਇਨਪੁੱਟਾਂ ਉੱਤੇ ਵਿਨਾਸ਼ਕਾਰੀ ਬੈਕਟ੍ਰੈਕਿੰਗ ਤੋਂ ਸੁਰੱਖਿਆ ਕਰਦਾ ਹੈ — ਨਹੀਂ ਤਾਂ ਟੈਬ ਅਟਕ ਜਾਂਦਾ। ਇਹ ਗਾਰਡ ਵਧੀਆ-ਯਤਨ ਵਾਲਾ ਹੈ: ਇੱਕ ਰੋਗ-ਗ੍ਰਸਤ ਇਕੱਲੇ-ਮੈਚ ਪੈਟਰਨ ਅਜੇ ਵੀ ਇੱਕexecਕਾਲ ਦੇ ਅੰਦਰ ਸਮਾਂ ਖਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਜੇ ਕਦੇ ਅਜਿਹਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਟੈਬ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ ਅਤੇ ਪੈਟਰਨ ਨੂੰ ਇੱਕ ਗੈਰ-ਲਾਲਚੀ ਕੁਆਂਟੀਫਾਇਰ ਜਾਂ ਇੱਕ ਐਟੌਮਿਕ-ਸ਼ੈਲੀ ਪੋਜ਼ੈਸਿਵ ਨਾਲ ਮੁੜ ਲਿਖੋ (ਜਿਵੇਂ[^x]*x)। - ਟੈਸਟ ਸਤਰ ਨੂੰ ਹਰ ਮੈਚ ਦੀ ਰੇਂਜ ਉੱਤੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਮਿਲਾਏ ਗਏ ਹਿੱਸਿਆਂ ਨੂੰ
<mark class="rx-match rx-cap-N">ਐਲੀਮੈਂਟਾਂ ਵਿੱਚ ਲਪੇਟਿਆ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇNਛੇ ਪੈਲੇਟ ਰੰਗਾਂ ਵਿੱਚੋਂ ਚੱਕਰ ਲਾਉਂਦਾ ਹੈ ਤਾਂ ਜੋ ਨਾਲ-ਨਾਲ ਆਉਣ ਵਾਲੇ ਮੈਚਾਂ ਨੂੰ ਇੱਕ ਨਜ਼ਰ ਵਿੱਚ ਅਲੱਗ ਦੱਸਣਾ ਆਸਾਨ ਹੋਵੇ। ਹਰ ਮੈਚ ਦੇ ਨੰਬਰ ਵਾਲੇ ਗਰੁੱਪ (m[1],m[2], …) ਅਤੇ ਨਾਮੀ ਗਰੁੱਪ (m.groups) ਹੇਠਾਂ ਲੇਬਲ ਕੀਤੀਆਂ ਕਤਾਰਾਂ ਵਜੋਂ ਰੈਂਡਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ; ਜੇdਫਲੈਗ ਸੈੱਟ ਹੈ, ਤਾਂ ਪ੍ਰਤੀ-ਗਰੁੱਪ[start, end]ਇੰਡੈਕਸ ਵੀ ਦਿਖਾਏ ਜਾਂਦੇ ਹਨ।
ਇਹ regex ਟੈਸਟਰ ਕਿਉਂ ਵਰਤੋ?
- ਗੋਪਨੀਯਤਾ: ਹਰ ਪੈਟਰਨ, ਟੈਸਟ ਸਤਰ ਅਤੇ ਬਦਲਾਵ ਬਿਲਟ-ਇਨ JavaScript RegExp ਇੰਜਣ ਵਰਤ ਕੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਚੱਲਦਾ ਹੈ। ਕੁਝ ਵੀ ਟੈਬ ਤੋਂ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ — ਮਹੱਤਵਪੂਰਨ ਜਦੋਂ ਇਨਪੁੱਟ ਕੋਈ ਗਾਹਕ ਲਾਗ, ਲੀਕ ਹੋਇਆ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਪੈਟਰਨ, ਜਾਂ ਕੁਝ ਹੋਰ ਹੋਵੇ ਜੋ ਤੁਸੀਂ ਕਿਸੇ ਹੋਸਟ ਕੀਤੇ SaaS regex ਪਲੇਅਗਰਾਊਂਡ ਵਿੱਚ ਪੇਸਟ ਨਾ ਕਰੋ।
- ਅਸਲੀ ਸੁਆਦ: ਟੈਸਟਰ ਉਹੀ regex ਇੰਜਣ ਦਿਖਾਉਂਦਾ ਹੈ ਜੋ Node.js, Chrome, Safari, Firefox ਅਤੇ ਹਰ ਬ੍ਰਾਊਜ਼ਰ-ਅਧਾਰਿਤ ਫਾਰਮ ਵੈਲੀਡੇਟਰ ਚਲਾਉਂਦਾ ਹੈ। ਕੋਈ Perl-ਫਲੇਵਰ ਅਨੁਵਾਦ ਪਰਤ ਨਹੀਂ — ਜੋ ਇੱਥੇ ਕੰਮ ਕਰਦਾ ਹੈ ਉਹ ਤੁਹਾਡੇ ਕੋਡ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ।
- ਕੈਪਚਰ ਅਤੇ ਨਾਮੀ-ਗਰੁੱਪ ਡੀਬੱਗਿੰਗ: ਹਰ ਨੰਬਰ ਵਾਲਾ ਗਰੁੱਪ (
$1,$2, …) ਅਤੇ ਨਾਮੀ ਗਰੁੱਪ ($<year>) ਪ੍ਰਤੀ ਮੈਚ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਤੁਸੀਂ ਇੱਕ ਪਾਰਸਰ ਬਣਾ ਸਕੋ ਅਤੇ ਬਿਨਾਂ ਅੰਦਾਜ਼ਾ ਲਾਏ ਸਲਾਟ ਵਾਪਸ ਪੜ੍ਹ ਸਕੋ। ਰਿਪਲੇਸ ਮੋਡ ਤੁਹਾਨੂੰ ਗਰੁੱਪਾਂ ਨੂੰ ਆਜ਼ਾਦੀ ਨਾਲ ਮਿਲਾਉਣ ਦਿੰਦਾ ਹੈ —$2-$1ਪਹਿਲੇ ਦੋ ਸਲਾਟ ਅਦਲ-ਬਦਲ ਕਰਦਾ ਹੈ,$<name>ਇੱਕ ਨਾਮੀ ਸਲਾਟ ਪਾ ਦਿੰਦਾ ਹੈ, ਅਤੇ$&ਪੂਰੇ ਮੈਚ ਨੂੰ ਮੋੜਦਾ ਹੈ। - ਵਿਨਾਸ਼ਕਾਰੀ-ਬੈਕਟ੍ਰੈਕਿੰਗ ਗਾਰਡ: ਗਿਣਤੀ 'ਤੇ 50 ms ਸੀਮਾ
(a+)+$ਜਿਹੇ ਪੈਟਰਨਾਂ ਨੂੰ ਰੱਦ ਕਰਦੀ ਹੈ ਤਾਂ ਜੋ ਉਹ ਟੈਬ ਜਾਮ ਨਾ ਕਰਨ। ਤੁਸੀਂ ਜਾਮ ਹੋਏ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਬਜਾਏ ਵਿਆਖਿਆਤਮਕ ਗਲਤੀ ਵੇਖਦੇ ਹੋ।
Regex ਟੈਸਟਰ ਦੀਆਂ ਆਮ ਵਰਤੋਂ ਕੀ ਹਨ?
ਨਿਯਮਿਤ ਸਮੀਕਰਨਾਂ ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ, ਸੁਰੱਖਿਆ ਅਤੇ ਡੇਟਾ ਕੰਮ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ — ਇਹ ਟੈਸਟਰ ਸਭ ਤੋਂ ਆਮ ਵਰਤੋਂ ਦੇ ਕੇਸਾਂ ਲਈ ਹੈ:
- ਫਾਰਮ ਪ੍ਰਮਾਣੀਕਰਨ: ਇੱਕ ਈਮੇਲ, ਫੋਨ, ਜਾਂ ਪੋਸਟਲ-ਕੋਡ ਪੈਟਰਨ ਪ੍ਰੋਟੋਟਾਈਪ ਕਰੋ, ਟੈਸਟ ਸਤਰ ਵਿੱਚ ਨਮੂਨਾ ਇਨਪੁੱਟ ਪੇਸਟ ਕਰੋ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਹਰ ਸਕਾਰਾਤਮਕ ਕੇਸ ਮੇਲ ਖਾਂਦਾ ਹੈ ਅਤੇ ਹਰ ਨਕਾਰਾਤਮਕ ਕੇਸ ਨਹੀਂ।
- ਲਾਗ ਸਕ੍ਰੈਪਿੰਗ: NGINX, ਐਪਲੀਕੇਸ਼ਨ, ਜਾਂ ਆਡਿਟ-ਲਾਗ ਆਉਟਪੁੱਟ ਦਾ ਇੱਕ ਟੁਕੜਾ ਪੇਸਟ ਕਰੋ, ਜਿਨ੍ਹਾਂ ਹਿੱਸਿਆਂ ਦੀ ਤੁਹਾਨੂੰ ਪਰਵਾਹ ਹੈ ਉਨ੍ਹਾਂ ਲਈ ਨਾਮੀ ਗਰੁੱਪਾਂ ਨਾਲ ਇੱਕ ਪੈਟਰਨ ਲਿਖੋ (
(?<ip>…) (?<path>…)), ਅਤੇ ਆਪਣਾ ਪਾਰਸਰ ਸਹੀ ਹੈ ਇਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਪ੍ਰਤੀ ਮੈਚ ਕੈਪਚਰ ਕੀਤੇ ਸਲਾਟ ਪੜ੍ਹੋ। - ਰਿਫੈਕਟਰ ਸਰਚ-ਐਂਡ-ਰਿਪਲੇਸ: ਇੱਕ ਸਨਿੱਪਟ ਵਿੱਚ ਆਈਡੈਂਟੀਫਾਇਰ ਮੁੜ ਲਿਖਣ ਲਈ ਰਿਪਲੇਸ ਮੋਡ ਵਰਤੋ —
(\w+)\.set(\w+)\(→$1.$2 =ਗੈੱਟਰ ਕਾਲਾਂ ਨੂੰ ਪ੍ਰਾਪਰਟੀ ਅਸਾਈਨਮੈਂਟਾਂ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਲਾਈਵ ਪੂਰਵਦਰਸ਼ਨ ਨਤੀਜਾ ਦਿਖਾਉਂਦਾ ਹੈ ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਇਸ ਨੂੰ ਇੱਕ ਕੋਡਮੋਡ ਵਿੱਚ ਕਮਿੱਟ ਕਰੋ।
ਇੱਕ regex ਉਦਾਹਰਨ ਕਿਹੋ ਜਿਹੀ ਦਿਖਦੀ ਹੈ?
ਪੈਟਰਨ (\d{4})-(\d{2})-(\d{2}) ਨੂੰ g ਫਲੈਗ ਨਾਲ ਲਓ, ਟੈਸਟ ਸਤਰ release 2025-11-15, prerelease 2026-05-25 ਦੇ ਵਿਰੁੱਧ ਚਲਾਓ। ਇੰਜਣ ਦੋ ਮੈਚ ਲੱਭਦਾ ਹੈ। ਪਹਿਲਾ ਮੈਚ 2025-11-15 ਹੈ ਜਿਸ ਵਿੱਚ ਗਰੁੱਪ 1 = 2025, ਗਰੁੱਪ 2 = 11, ਗਰੁੱਪ 3 = 15। ਦੂਜਾ ਮੈਚ 2026-05-25 ਹੈ ਜਿਸ ਦਾ ਗਰੁੱਪ ਆਕਾਰ ਉਹੀ ਹੈ। ਰਿਪਲੇਸ ਮੋਡ ਵਿੱਚ, ਬਦਲਾਵ ਟੈਮਪਲੇਟ $3/$2/$1 ਦੋਵੇਂ ਤਾਰੀਖਾਂ ਨੂੰ 15/11/2025 ਅਤੇ 25/05/2026 ਵਿੱਚ ਮੁੜ ਲਿਖ ਦਿੰਦਾ ਹੈ — ਇੱਕ ਇਕੱਲੇ-ਪੈਟਰਨ ਵਾਲਾ ISO-ਤੋਂ-DMY ਰੂਪਾਂਤਰਨ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਪੈਟਰਨ ਨੂੰ ਇੱਕ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਨਜ਼ਰ ਨਾਲ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹੋ।
ਕਿਸੇ ਵੀ regex ਕੰਮ ਲਈ ਇਸ ਟੈਸਟਰ ਨੂੰ ਤੇਜ਼ ਰਸਤੇ ਵਜੋਂ ਵਰਤੋ — ਪੈਟਰਨ ਬਣਾਉਣਾ, ਡੀਬੱਗ ਕਰਨਾ, ਜਾਂ ਮੁੜ ਲਿਖਣਾ। ਸਭ ਕੁਝ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚੱਲਦਾ ਹੈ; ਕੁਝ ਵੀ ਲਾਗ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ; regex ਇੰਜਣ ਉਹੀ ਹੈ ਜੋ ਤੁਹਾਡਾ ਬ੍ਰਾਊਜ਼ਰ ਵਰਤਦਾ ਹੈ।