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

السؤال

نشر

السلام عليكم 

عملت 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
نشر

هذه هي العبارة الخاصة بالتحقق من وجود 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)

 

  • 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) لأنك تريد العثور على جميع التطابقات في النص، ليس فقط أول تطابق.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...