جعلت البرمجة من السهل التعامل مع البيانات النصية المنظمة وغير المنظمة. أدوات مثل التعبيرات العادية والمكتبات الخارجية تجعل هذه المهام أسهل كثيرًا.
يمكنك استخدام معظم اللغات ، بما في ذلك Python و JavaScript ، للتحقق من صحة عناوين URL باستخدام تعبير عادي. هذا المثال من regex ليس مثاليًا ، ولكن يمكنك استخدامه للتحقق من عناوين URL لحالات الاستخدام البسيطة.
تعبير عادي للتحقق من صحة عنوان URL
التعبير المعتاد للتحقق من صحة عنوان URL المقدم في هذه المقالة ليس مثاليًا. قد تكون هناك أمثلة متعددة لعناوين URL الصالحة التي قد تفشل في التحقق من صحة التعبير العادي. يتضمن ذلك عناوين URL التي تتضمن عناوين IP وأحرفًا غير ASCII وبروتوكولات مثل FTP. يتحقق التعبير المعتاد التالي فقط من عناوين URL الأكثر شيوعًا.
سيعتبر التعبير المعتاد عنوان URL صالحًا إذا استوفى الشروط التالية:
- يجب أن تبدأ السلسلة بأي منهما http أو https تليها ://.
- يجب أن يكون الطول المجمع للمجال الفرعي والمجال بين 2 و 256. يجب أن يحتوي فقط على أحرف أبجدية رقمية و / أو أحرف خاصة.
- يجب أن يحتوي TLD (مجال المستوى الأعلى) فقط على أحرف أبجدية ويجب أن يتراوح طوله بين حرفين وستة أحرف.
- يمكن أن تحتوي نهاية سلسلة URL على أحرف أبجدية رقمية و / أو أحرف خاصة. ويمكن أن يتكرر صفر مرة أو أكثر.
يمكنك التحقق من صحة عنوان URL في JavaScript باستخدام التعبير العادي التالي:
^ (http (s): \ / \ /.) [- a-zA-Z0-9@:%._\+~# =] {2،256} \. [a-z] {2،6} \ b ([- a-zA-Z0-9 @:٪ _ \ +. ~ #؟ & // =] *) $
وبالمثل ، يمكنك استخدام regex التالي للتحقق من صحة عنوان URL في Python:
^ ((http | https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
أين:
- (http | https): //) تأكد من أن السلسلة تبدأ إما ببروتوكول http أو https متبوعًا بـ: //.
- [-a-zA-Z0-9 @:٪ ._ \\ + ~ #؟ & // =] يشير إلى أحرف أبجدية رقمية و / أو أحرف خاصة. يمثل المثيل الأول من هذه المجموعة مجموعة الأحرف المسموح بها في المجال الفرعي وجزء المجال. بينما يمثل المثيل الثاني من هذه المجموعة مجموعة الأحرف المسموح بها في سلسلة الاستعلام أو جزء الدليل الفرعي.
- {2,256} يمثل 2 إلى 256 (كلاهما شامل) مؤشر حدوث مرات. يشير هذا إلى أن الطول المجمع للنطاق الفرعي والمجال يجب أن يكون بين اثنين و 256.
- \. يمثل الحرف النقطي.
- [a-z] {2،6} تعني أي أحرف صغيرة من a إلى z بطول يتراوح بين اثنين وستة. يمثل هذا مجموعة الأحرف المسموح بها في جزء نطاق المستوى الأعلى.
- \ب يمثل حدود الكلمة ، أي بداية الكلمة أو نهاية الكلمة.
- * هو عامل التكرار الذي يشير إلى صفر أو أكثر من نسخ سلسلة الاستعلام أو المعلمات أو الدلائل الفرعية.
- ^ و $ تشير إلى بداية السلسلة ونهايتها على التوالي.
إذا كنت غير مرتاح للتعبير أعلاه ، فتحقق دليل المبتدئين للتعبيرات العادية أولاً. تستغرق التعبيرات العادية بعض الوقت لتعتاد عليها. استكشاف بعض الأمثلة مثل التحقق من صحة تفاصيل حساب المستخدم باستخدام التعبيرات العادية يجب المساعدة.
يلبي التعبير العادي أعلاه الأنواع التالية من عناوين URL:
- https://www.something.com/
- http://www.something.com/
- https://www.something.edu.co.in
- http://www.url-with-path.com/path
- https://www.url-with-querystring.com/?url=has-querystring
- http://url-without-www-subdomain.com/
- https://mail.google.com
استخدام التعبير العادي في البرنامج
الكود المستخدم في هذا المشروع متاح في ملف مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.
هذه طريقة Python للتحقق من صحة عنوان URL:
يستورد يكرر
defتحقق من عنوان URL(عنوان url):
regex = "^ ((http | https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)لو (يكرر.يبحث(ص, عنوان url)):
مطبعة("صالح")
آخر:
مطبعة("غير صالح")
url1 = "https://www.linkedin.com/"
ValidateURL (url1)
url2 = "http://apple"
ValidateURL (url2)
url3 = "iywegfuykegf"
ValidateURL (url3)
url4 = "https://w"
ValidateURL (url4)
يستخدم هذا الرمز لغة Python re.compile () طريقة لتجميع نمط التعبير العادي. تقبل هذه الطريقة نمط regex كمعلمة سلسلة وترجع كائن نمط regex. يتم استخدام كائن نمط regex هذا أيضًا للبحث عن تكرارات نمط regex داخل السلسلة الهدف باستخدام بحث() طريقة.
إذا عثر على تطابق واحد على الأقل ، فسيتم بحث() طريقة إرجاع المباراة الأولى. لاحظ أنه إذا كنت تريد البحث عن جميع التطابقات للنمط من السلسلة الهدف ، فأنت بحاجة إلى استخدام ملحق re.findall () طريقة.
سيؤدي تشغيل الكود أعلاه إلى تأكيد أن عنوان URL الأول صالح ولكن باقيهم ليسوا كذلك.
وبالمثل ، يمكنك التحقق من صحة عنوان URL في JavaScript باستخدام الكود التالي:
وظيفةتحقق من عنوان URL(عنوان url) {
لو(/ ^ (http (s): \ / \ /.) [- a-zA-Z0-9@:%._\+~# =] {2،256} \. [a-z] {2،6} \ b ([- a-zA-Z0-9 @:٪ _ \ +. ~ #؟ & // =] *) $ / g.test (عنوان url)) {
console.log ('صالح');
} آخر {
console.log ('غير صالح');
}
}
تحقق من عنوان URL ("https://www.linkedin.com/");
تحقق من عنوان URL ("http://apple");
تحقق من عنوان URL ("iywegfuykegf");
تحقق من عنوان URL ("https://w");
مرة أخرى ، سيؤدي تشغيل هذا الرمز إلى تأكيد صحة عنوان URL الأول والباقي غير صالح. يستخدم جافا سكريبت مباراة() طريقة لمطابقة السلسلة المستهدفة مع نمط التعبير العادي.
تحقق من صحة البيانات المهمة باستخدام التعبيرات العادية
يمكنك استخدام التعبيرات العادية للبحث عن نص أو مطابقته أو تحليله. يتم استخدامها أيضًا لمعالجة اللغة الطبيعية ومطابقة الأنماط والتحليل المعجمي.
يمكنك استخدام هذه الأداة القوية للتحقق من صحة أنواع مهمة من البيانات مثل أرقام بطاقات الائتمان وتفاصيل حساب المستخدم وعناوين IP والمزيد.