سؤال

أحاول البحث عن سلاسل قديمة عادية عن عناوين URL التي تبدأ بـ HTTP ، ولكن يبدو أن كل Regex لا يبدو أنه يعمل في JavaScript ولا يمكنني العثور على مثال على ذلك في JavaScript.

هذا هو الشخص الذي أحاول استخدامه من هنا و هنا:

var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;

لكن عندما أحاول تشغيله ، أحصل على "رمز غير متوقع |" الأخطاء.

هل كانت مفيدة؟

المحلول

حسنًا ، يبدو أن التعليق لا يكفي ، ويصعب العثور على إجابة كاملة. أعيد كتابة كامل regexp: (تم اختباره ، يعمل بشكل جيد)

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;

ال i في النهاية يعني "تجاهل الحالة" ، لذلك من الضروري لهذا regexp.

نصائح أخرى

أنت تستخدم / كـ Regex Delimiter الخاص بك ، وتستخدم أيضًا / داخل regex (قبل www) ، لذلك ينتهي Regex فعليًا بعد الأول / قبل www. تغييره إلى:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top