اذهب إلى المحتوى
  • 0

اريد regular expression تقبل النصوص العربية والانجليزية والارقام والرموز وايضا ال emoji

أحمد عبد الله2

السؤال

السلام عليكم 

عملت regular expression تقبل الاحرف العربية والانجليزية والارقام لكن بها عيب 

/^(?=.{2,30}$)[\u0600-\u065F\u066A-\u06EF\u06FA-\u06FFa-zA-Z 1-9 .,]+(?:\s[\u0600-\u065F\u066A-\u06EF\u06FA-\u06FFa-zA-Z 1-9 .,]+)?$/


العيب هو انها لا تقبل الايموجي مثلا .. 
👋😃

وانا اريدها ان تقبله .. كيف احل هذه المشكلة ؟

بعد البحث وجدت هذه 
 

(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])

لكن لا اعلم كيف اضيفها 
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

تستطيع الإعتماد على التعبير الحديث التالي:

/\p{Emoji}/u

ففي الدعم الأحدث للتعبيرات العادية في البيئة المتصفحة (مثل Chrome، Firefox، Safari، إلخ)، التحسينات تسمح لك باستخدام تعبيرات عامة تعتمد على خصائص يونيكود للتعرف على مجموعات محددة من الأحرف، مثل الإيموجي.

خاصية \p{Emoji} escape تطابق أي حرف Unicode مصنف على أنه رمز تعبيري، والعلامة u تخبر محرك regular expression بتفسير النمط كسلسلة Unicode.

وكمثال الكود التالي سيكشف عن جميع الرموز التعبيرية في السلسلة "Hello 😀 😄":

const text = "Hello 😀 😄";
const regex = /\p{Emoji}/u;

const matches = regex.exec(text);

console.log(matches); // ['😀', '😄']

و هناك نطاق يمثل الأحرف العربية والإنجليزية والأرقام ويمكنك دمجه مع \p{Emoji}. النطاق المشترك للأحرف العربية والإنجليزية والأرقام هو \p{L}\p{N}.

إليك الكود مع تضمين الأحرف العربية والإنجليزية والأرقام:

const text = "Hello 😀 😄 مرحبا 123";
const regex = /[\p{L}\p{N}\p{Emoji}]+/gu;

const matches = text.match(regex);

console.log(matches); // ['Hello', '😀', '😄', 'مرحبا', '123']

اعتمدت على \p{L} للدلالة على الأحرف اللغوية (مثل العربية والإنجليزية) و\p{N} للأرقام، أما  + تعني أنه يمكن أن يكون هناك تطابق لسلسلة من تلك الأحرف والأرقام، و u يشير إلى دعم اليونيكود.

واستخدام text.match(regex) بدلاً من regex.exec(text) لأنك تريد العثور على جميع التطابقات في النص، ليس فقط أول تطابق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هذه هي العبارة الخاصة بالتحقق من وجود emoji :

[\u{1F600}-\u{1F64F}]

ويمكنك استخدامها كالتالي :

const regex = /[\u{1F600}-\u{1F64F}]/gu;
const text = "Hello 😊";
console.log(regex.test(text)); // true

وبدمجها مع الاحرف العربية والانجليزية تصبح بالشكل :

[\uD83C-\uDBFF\uDC00-\uDFFFa-zA-Z\u0627-\u064A\s]+

ويمكنك استخدامها في جافاسكريبت كالتالي :

const regex = /^[\uD83C-\uDBFF\uDC00-\uDFFFa-zA-Z\u0627-\u064A\s]+$/;
const text = "Hello 😊 مرحبا";
text.match(regex)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...