Regex آدرس URL
آدرسهای وب را با یک الگوی کوتاه در متن پیدا کنید و پیش از گذاشتن آن در کد، ببینید دقیقاً کجا متوقف میشود.
Regex آدرس URL
بیرون کشیدن لینکها از لاگها، خروجی چتها یا متنهای استخراجشده کار یک عبارت باقاعده است، و الگو باید آنقدر کوتاه باشد که بشود خواندش. این صفحه آزمایشگر Regex را با الگوی URL (http/https) از کتابخانهٔ الگوها، یعنی https?:\/\/[^\s/$.?#][^\s]*، با پرچمهای gi باز میکند.
الگو را چطور بخوانیم
| بخش | معنی |
|---|---|
https? | http، با یک s اختیاری |
:\/\/ | دونقطه و دو اسلش، Escapeشده تا الگو بین دو اسلش در کد هم کار کند |
[^\s/$.?#] | نخستین کاراکتر نام میزبان: هر کاراکتری بهجز فاصله، اسلش، علامت دلار، نقطه، علامت سؤال و علامت هش |
[^\s]* | هر چیز دیگری تا فاصله بعدی |
gi | همه لینکها را با هر بزرگی و کوچکی حروف پیدا میکند |
چه چیزی را میگیرد و چه چیزی را جا میاندازد
| متن | نتیجه |
|---|---|
https://logicutil.com/tool/regex-tester | کل آدرس |
http://example.org/page?q=1#top | کل آدرس، همراه با کوئری و fragment |
http://localhost:8080/x | کل آدرس، همراه با پورت |
HTTPS://EXAMPLE.COM/X | تطبیق میکند، به لطف پرچم i |
https://例子.测试/路径 | تطبیق میکند: دامنهها و مسیرهای غیرلاتین حفظ میشوند |
Visit https://example.com. | https://example.com.، همراه با نقطه |
(https://example.com/a) | https://example.com/a)، همراه با پرانتز |
www.example.com | بدون تطبیق: scheme ندارد |
ftp://files.example.com | بدون تطبیق: فقط http و https |
نسخه دقیقتر
برای کنار گذاشتن علائم نگارشی انتهایی، تطبیق را با یک lookahead تمام کنید: https?:\/\/[^\s/$.?#][^\s]*?(?=[\].,;:!?)]*(?:\s|$)). این الگو کوتاهترین بخشی را میگیرد که بعد از آن فقط علائم نگارشی و سپس یک فاصله یا انتهای متن بیاید؛ پس Visit https://example.com. نتیجه https://example.com را میدهد و (https://example.com/a) نتیجه https://example.com/a را. بهایش این است که لینکی که واقعاً به پرانتز ختم میشود، مثل برخی آدرسهای Wikipedia، آن پرانتز را از دست میدهد.
پیدا کردن لینک، اعتبارسنجی آن نیست
الگویی مثل این به پرسش «آیا این متن چیزی شبیه لینک دارد؟» پاسخ میدهد، نه به پرسش «آیا این آدرس کار میکند؟». برای یک مقدار تکی در JavaScript، new URL(value) سختگیرتر است: روی https:// بدون هیچ میزبانی خطا پرتاب میکند. از regex برای پیدا کردن نامزدها در متن استفاده کنید و تصمیم را به new URL() یا سرورتان بسپارید.
صفحههای مرتبط
لینکهای پیداشده را در صفحه جستوجو و جایگزینی با Regex با [$&]($&) به Markdown تبدیل کنید و رفتار پرچمها را در تست Regex جاوااسکریپت ببینید. آدرسهای ایمیل دامهای خاص خودشان را دارند که در راهنمای Regex برای ایمیل آمده است.