الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كتابة regular expression

بدأه moto007 في 28 أغسطس 2011 · 8 رد · 957 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخوتي ..

عندي أستفسار بسيط بخصوص كتابة ( regex ) أو ( regular expression ) ، بحيث تقبل أحرف عربية .

فمثلا ً الكود بالأسفل يحتوي على ( regex ) تقبل فقط حروف وأرقام باللغة الإنجليزية ، أريد إضافة الأحرف والأرقام العربية .

String enteredEmail = "abc";


        CharSequence ch = enteredEmail;
        Pattern p = Pattern.compile("^[a-zA-Z0-9]+$");

        Matcher m = p.matcher(ch);

في الحقيقة انا اتمنى أن تكون ( regex ) تشمل الأحرف الأنجليزية والعربية .

تقبلوا تحياتي ...

#2

كل عام وانتم بخير

استخدم اخي

اذا كانت الارقام عربية اي لا تظهر بالارقام one Two في برامج لاتدعم العربي

"^[\u0660-\u0669]+$"

في الحقيقة هي تشملها

http://www.regular-expressions.info/unicode.html

http://www.fileformat.info/info/unicode/block/arabic/images.htm

تحياتي

تم تعديل هذه المشاركة بواسطة ihope في 29 أغسطس 2011 في 00:12

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#3

السلام عليكم ..

للتوضيح كانت أحد محاولاتي وهي .. اني استخدمت مكتبة ( UNICODE ) لأحد الزملاء في موضوع موجود ضمن المواضيع المميزة في هذا المنتدى .

وهي أني حولت حرف الألف ( ا ) والنتيجة هي ( \u0627 ) وحولت حرف الياء والنتيجة هي ( \u064a ) .. واصبحت regex هي كالتالي

String enteredEmail = s;


        CharSequence ch = enteredEmail;
        Pattern p = Pattern.compile("^[\u0627-\u064a-zA-Z0-9]+$");

        Matcher m = p.matcher(ch);

        matchFound = m.matches();

والحمدلله عملت .. ولكن لما أدخل حرف كال( أ ) لا تعمل مع أسم كأحمد .. وأعتقد لو كان عندي ( الحد الأدنى والحد الأعلى للحروف العربية بإمكننا حلها ) .

تحياتي

ihope كتب:

كل عام وانتم بخير

استخدم اخي

اذا كانت الارقام عربية اي لا تظهر بالارقام one Two في برامج لاتدعم العربي

"^[\u0660-\u0669]+$"

في الحقيقة هي تشملها

http://www.regular-expressions.info/unicode.html

http://www.fileformat.info/info/unicode/block/arabic/images.htm

تحياتي

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

تقبل تحياتي

#4

شكرا

لقد تم الحل بواسطة تعويض بــ

String enteredEmail = s;


        CharSequence ch = enteredEmail;
        Pattern p = Pattern.compile("^[\u0600-\u0648a-zA-Z0-9]+$");

        Matcher m = p.matcher(ch);

        matchFound = m.matches();

لقد نجحت معي ، إذا كان هناك خطاء ما ، اتمنى توضيحه لي .

تقبلو تحياتي

#5

عذرا اعتقدت انك تريد الارقام العربية فقط

لكن ان اردت النصوص العربية

استخدم

"([\\p{InArabic}]+)"

الملاحظة على طريقتك انها لا تضم الالف المقصورة والياء والتشكيل

انصحك باستخدام InArabic كما سيق

تحياتي

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#6

شكرا ً لك .. على الرد الأجمل ..

لكن يتبقى أن المسافات غير مشمولة .. يعني .. الأسم المركب مثل ( محمد عبدالله ) .. غير مقبول .

تقبل تحياتي ..

#7

اضف \\s

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#8

بهذا الشكل

([\\p{InArabic}]+\\s)
#9

ضبط معي بهذا الشكل الأخير أتمنى ان يكون صحيح .

([\\s\\p{InArabic}]+)

أشكرك جزيل الشكل على المساعدة ، وإن شاء الله نردها لك .

كل عام وانت بخير ..

مواضيع مشابهة