PDA

View Full Version : اعتبار سنجي ادرس وب سايت



pedram_ns
سه شنبه 17 فروردین 1389, 15:32 عصر
سلام
اين كد اعتبار سنجي آدرس وبه.
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

چكار كنم كه ادرس وب رو بدون http:// انجام بده يعني به آدرس هايي به اين صورت اجازه كار بده.
www.barnamenevis.org

Alireza Orumand
سه شنبه 17 فروردین 1389, 15:49 عصر
سلام
اگر کلا به httpنیازی نداری میتونید از اول RegX حذفش کنید ولی اگر بخواهید میتونید مثل قسمت s که علامت سوال داره http رو هم داخل پرانتز قرار بدید با علامت سوال تا یا نباشه یا درست باشه
موفق باشید

pedram_ns
سه شنبه 17 فروردین 1389, 18:43 عصر
خوب وقتي http رو حذف مي كنم اصلا اعتبار سنجي نمي كنه مي شه دقيقا كد رو بنويسيد كه بدونم چي بايد بنويسيم.

Behrouz_Rad
شنبه 21 فروردین 1389, 15:04 عصر
^www\.\w+\.[a-zA-Z]{2,4}$

mehdi.mousavi
شنبه 21 فروردین 1389, 15:29 عصر
چكار كنم كه ادرس وب رو بدون http:// انجام بده يعني به آدرس هايي به اين صورت اجازه كار بده. www.barnamenevis.org (http://www.barnamenevis.org)


^([\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*

Behrouz_Rad
شنبه 21 فروردین 1389, 21:41 عصر
^([\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*
این RegEx ای که گذاشتی کاملاً اشتباست!!!
عبارت های ذیل رو هم تطبیق میده:


wwrrrw.4yahoo.info
wwrrrw.4yahoo.info?id=5 gg
www.yahoo.comingrewrewrwe
@@

pedram_ns
شنبه 21 فروردین 1389, 22:33 عصر
كدي كه داديد درسته فقط يك مشكل داره به ادرس هايي مانند ادرس زير اجازه عبور نمي ده.
www.barnamenevis.co.uk

Behrouz_Rad
شنبه 21 فروردین 1389, 22:54 عصر
كدي كه داديد درسته فقط يك مشكل داره به ادرس هايي مانند ادرس زير اجازه عبور نمي ده.
www.barnamenevis.co.uk
به شکل ذیل اصلاح کن:


^www\.\w+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})*$

حالت دیگه ای هم مد نظرت هست؟

mehdi.mousavi
شنبه 21 فروردین 1389, 23:43 عصر
این RegEx ای که گذاشتی کاملاً اشتباست!!!
عبارت های ذیل رو هم تطبیق میده:


wwrrrw.4yahoo.info
wwrrrw.4yahoo.info?id=5 gg
www.yahoo.comingrewrewrwe
@@


سلام.
در مورد اول، یعنی wwrrrw.4yahoo.info، این کاملا Domain Name معتبری هستش. بطور مثال، به این Domain سر بزنید: http://www2.warnerbros.com/happyfeet

قرار نیست همیشه www باقی بمونه که! این فقط یه قرارداده. همینطور http://www4.uwm.edu و ... همونطور که میبینید این Domain Name ها Valid هستن. پس اولی هیچی.

در مورد دومی، یعنی wwrrrw.4yahoo.info?id=5 gg اگر دقت کنید، gg آخر رو capture نمیکنه. (توی Expresso تستش کنید).

سومی هم Domain معتبری هستش، چون TLD ها قرار دادی هستن و هر چه که دلمون بخواد میتونیم انتخاب کنیم. بعنوان نمونه (اینو نمیخواستم اینجا مطرح کنم، اما خوب، از من فعلا نشنیده بگیرید) به این آدرس برید (فعلا در FireFox چون IE اینو support نمیکنه):

مثال.آزمایشی (http://%C3%99%C2%85%C3%98%C2%AB%C3%98%C2%A7%C3%99%C2%84.% C3%98%C2%A2%C3%98%C2%B2%C3%99%C2%85%C3%98%C2%A7%C3 %9B%C2%8C%C3%98%C2%B4%C3%9B%C2%8C)

همونطور که میبینید، بزودی آدرسها Unicode میشن و ... فقط حالت آخر حق باشماست، که @@ رو match میکنه...

بابت این هم معذرت میخوام :لبخند:

Behrouz_Rad
یک شنبه 22 فروردین 1389, 08:51 صبح
@مهدی موسوی:
تو به واقعیت های الان نگاه کن. ممکنه در آینده عبارت "حسین قلی" هم یک آدرس باشه!
www2 رو می دونستم اما با توجه به مثال دوستمون، 3 تا www رو در نظر گرفتم.
مورد دومی که میگی اشتباست. قصد داریم تا متن رو Validate کنیم نه اینکه در متن آدرس ها رو پیدا کنیم! بنابراین gg یک عبارت اضافه هست که به آدرس اضافه شده و آدرس رو غیر معتبر می کنه.
در مورد سوم: در حال حاضر پسوند حداقل دو و حداکثر 4 کاراکتر (info) داریم. اگر Domian ای با تعداد کاراکترهای بیشتر سراغ داری بگو تا RegEx رو اصلاح کنم اما اینکه به کاربر اجازه بدی بی نهایت! کاراکتر به عنوان پسوند وارد کنه اصلاً صحیح نیست! اون آدرسی هم که گذاشتی واسه من باز نشد. فکر کنم احتیاج به پلاگین داره.
بابت چهارمی هم خواهش می کنم :لبخند:

الان چند تا عبارت دیگه هم با RegEx ای که گذاشتی تست کردم. اینها رو هم معتبر می دونه!!!


777..
7@@77
__jjjjj7

مهدی جون چه خبر؟ :لبخند::لبخند::لبخند:

mehdi.mousavi
یک شنبه 22 فروردین 1389, 10:13 صبح
@مهدی موسوی: تو به واقعیت های الان نگاه کن. ممکنه در آینده عبارت "حسین قلی" هم یک آدرس باشه! www2 رو می دونستم اما با توجه به مثال دوستمون، 3 تا www رو در نظر گرفتم. مورد دومی که میگی اشتباست. قصد داریم تا متن رو Validate کنیم نه اینکه در متن آدرس ها رو پیدا کنیم! بنابراین gg یک عبارت اضافه هست که به آدرس اضافه شده و آدرس رو غیر معتبر می کنه. در مورد سوم: در حال حاضر پسوند حداقل دو و حداکثر 4 کاراکتر (info) داریم. اگر Domian ای با تعداد کاراکترهای بیشتر سراغ داری بگو تا RegEx رو اصلاح کنم اما اینکه به کاربر اجازه بدی بی نهایت! کاراکتر به عنوان پسوند وارد کنه اصلاً صحیح نیست! اون آدرسی هم که گذاشتی واسه من باز نشد. فکر کنم احتیاج به پلاگین داره. بابت چهارمی هم خواهش می کنم :لبخند: الان چند تا عبارت دیگه هم با RegEx ای که گذاشتی تست کردم. اینها رو هم معتبر می دونه!!!


777..
7@@77
__jjjjj7
مهدی جون چه خبر؟ :لبخند::لبخند::لبخند:

سلام.
در مورد حسین قلی، الان FireFox رو باز کنید و بزنید مثال.آزمایشی (متاسفانه URL ای که گذاشتم رو Editor سایت Encode کرده بود، بهمین دلیل باز نشده). وقتی صفحه مثال.آزمایشی اومد، اونوقت متوجه واقعیت ها میشید. (البته تعداد افراد اندکی از این مساله مطلعن، منم بخاطر اینکه یکی از نزدیکانم تو ICANN بود، از این مساله مطلع شدم).

خوب، از "حسین قلی" که بگذریم، میرسیم به www2. دقت نکردید. www2 فقط یه مثال بود. FireFox رو باز کنید و این دو آدرس رو بزنید:

http://www2.elzemwax.com/en
http://www.www2.elzemwax.com/en

متوجه شدید منظورم چیه؟ الان Pattern شما chrome.blogspot.com (http://barnamenevis.org/forum/chrome.blogspot.com) رو هم match نمیکنه در صورتیکه این آدرس کاملا معتبره.

مورد دوم، درسته. حق با شماست.
مورد سوم، رو که توضیح دادم.

در نهایت با اینهمه مثال نقضی که آوردید، هر دو مون متوجه شدیم که Pattern ای که Jim Hollenhorst (http://www.ultrapico.com/Support.htm) پیشنهاد داده ایراد داره. اون Pattern رو Jim نوشته بود، نویسنده برنامه Expresso (http://www.ultrapico.com/Expresso.htm)، اما خوب، واقعیت اینه که هرگز فکر نمیکردم اینقدر ایراد داشته باشه.

الان چند تا Pattern تو سایتهای متفاوت با GPR بالا رو هم بررسی کردم، متاسفانه اونها هم بشدت ایراد دارن. Pattern ای که شما نوشته اید، یعنی


^www\.\w+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})*$

هم URL های معتبر زیر رو match نمیکنه:


www2.yahoo.com
wave.google.com
hh-1.msn.health.com:8080
مثال.آزمایشی
about.museum
www.travel.travel
و ...

در هر حال، بهتره سر این مساله دوئل نکنیم چون من گلوله خودم رو برای روز مبادا نگه داشتم و امروز، اون روز نیست. :لبخند:

Behrouz_Rad
یک شنبه 22 فروردین 1389, 10:41 صبح
@مهدی موسوی

تازه داریم به جاهای قشنگش میرسیم. بمون حالا، کجا میری؟ :لبخند:



خوب، از "حسین قلی" که بگذریم، میرسیم به www2. دقت نکردید. www2 فقط یه مثال بود. FireFox رو باز کنید و این دو آدرس رو بزنید:

http://www2.elzemwax.com/en
http://www.www2.elzemwax.com/en

همون طور که میدونی، RegEx برای عملکرد خودش نیاز به دونستن صحیح عبارتی داره که باید اون رو تطبیق بده. وقتی که فردی میپرسه که قصد دارم فلان عبارت رو تطبیق بدم، تو نمی تونی حالت های دیگه رو هم خودت اضافه کنی. این رو پرسش کننده باید بگه. این از اصول اولیه ی RegEx هست. واسه همین از دوستمون پرسیدم: "حالت های دیگه هم مد نظرت هست؟"
اگر دوستمون بخواد یا به طور کامل بگه که به غیر از مثالی که زده، نیاز داره تا عبارت های دیگه ای هم تطبیق بده، میشه RegEx رو بنا به نیازش اصلاح کرد. اضافه کردن عبارت en\ با مثالی که زده مد نظر دوستمون نبوده. ضمن اینکه http رو هم اضافه نوشتی.


در نهایت با اینهمه مثال نقضی که آوردید، هر دو مون متوجه شدیم که Pattern ای که Jim Hollenhorst پیشنهاد داده ایراد داره. اون Pattern رو Jim نوشته بود، نویسنده برنامه Expresso، اما خوب، واقعیت اینه که هرگز فکر نمیکردم اینقدر ایراد داشته باشه.

وقتی که پاسخی به فردی داده میشه، قبل از اون باید صحت پاسخ رو تایید کنی نه اینکه صرفاً یک Copy & Paste ساده انجام بدی. با طناب دیگران که نباید در چاه رفت :چشمک:


در هر حال، بهتره سر این مساله دوئل نکنیم چون من گلوله خودم رو برای روز مبادا نگه داشتم و امروز، اون روز نیست.

بنگ بنگ :لبخند:

موفق باشی.

mehdi.mousavi
یک شنبه 22 فروردین 1389, 10:49 صبح
اضافه کردن عبارت en\ با مثالی که زده مد نظر دوستمون نبوده. ضمن اینکه http رو هم اضافه نوشتی.

ای وای... en\ اصلا به ماجرا ربطی نداره، همینطور http.... منظورم مقایسه www2.elzemwax.com و www.www2.elzemwax.com بود. در واقع هدفم این بود که به sub domain ها توجهتون رو جلب کنم.