الدالات IsMatch، وMatch، وMatchAll
ينطبق على: تطبيقات
اللوحة التطبيقات
Power Pages
Power Platform المستندة إلى النموذج CLI
اختبارات لمطابقة أو استخراج أجزاء من سلسلة نصية بناءً على نمط.
الوصف
تختبر وظيفة IsMatch ما إذا كانت سلسلة نصية تتطابق مع نمط يمكن أن يشتمل على أحرف عادية أو أنماط محددة مسبقًا أو تعبيرًا منتظمًا. تقوم وظيفتا Match وMatchAll إرجاع ما تم مطابقته، بما في ذلك المطابقات الفرعية.
استخدم وظيفة IsMatch للتحقق مما كتبه المستخدم في عنصر تحكم Text input. على سبيل المثال، يمكنك تأكيد ما إذا كان المستخدم قد أدخل عنوان بريد إلكتروني صالحًا قبل حفظ النتيجة في مصدر البيانات. إذا لم يتطابق الإدخال مع معاييرك، فأضف عناصر تحكم أخرى تطالب المستخدم بتصحيح الإدخال.
استخدم Match لاستخراج السلسلة النصية الأولي التي تطابق النمط وMatchAll لاستخراج جميع السلاسل النصية المطابقة. يمكنك أيضًا استخراج المطابقات الفرعية لتحليل السلاسل المعقدة.
ترجع المطابقة سجلا للمعلومات الخاصة بالمطابقة الأولى التي تم العثور عليها، وترجع MatchAll جدول سجلات لكل تطابق تم العثور عليه. يحتوي السجل أو السجلات على:
Column | نوع | الوصف |
---|---|---|
المطابقة الفرعية المسماة أو التطابقات الفرعية | نص | سيكون لكل عمود فرعي مسمى عموده الخاص. قم بإنشاء تطابق فرعي مسمى باستخدام (?<الاسم>...) في التعبير المنتظم. إذا كانت مطابقة فرعية مسماة لها نفس اسم أحد الأعمدة المحددة مسبقًا (أدناه)، تكون للمطابقة الفرعية الأسبقية، ويتم إنشاء تحذير. لتجنب هذا التحذير، أعد تسمية المطابقة الفرعية. |
فول ماتش | النص | كل السلسلة النصية المطابقة. |
ستارت ماتش | الرقم | موضع البداية للمطابقة ضمن سلسلة نص الإدخال. يقوم الحرف الأول من السلسلة بإرجاع 1. |
المباريات الفرعية | جدول أحادي العمود للنص (عمود القيمة) | جدول التطابقات الفرعية المسماة وغير المسماة بالترتيب الذي تظهر به في التعبير العادي. بشكل عام، يسهل استخدام المطابقات الفرعية المسماة ويتم تشجيعها. استخدم وظيفة ForAll أو وظائف Last( FirstN( ... ) ) للعمل مع مطابقة فرعية فردية. إذا لم يتم تحديد مطابقات فرعية في التعبير العادي، فسيظهر هذا الجدول ولكنه فارغ. |
تدعم هذه الوظائف MatchOptions. بشكل افتراضي:
- تؤدي هذه الوظائف مطابقة حساسة لحالة الأحرف. استخدم MatchOptions.IgnoreCase لإجراء مطابقات غير حساسة لحالة الأحرف.
- يتطابق IsMatch مع السلسلة النصية بأكملها (Complete MatchOption) ، بينما يبحث Match و MatchAll عن تطابق في أي مكان في السلسلة النصية (يحتوي على MatchOption). استخدم الكامل أو يحتوي على أو BeginsWith أو EndsWith حسب ما يتناسب مع السيناريو الخاص بك.
ترجع IsMatch true إذا كانت السلسلة النصية تتطابق مع النمط أو false إذا لم تتطابق. ترجع المطابقة فارغة إذا لم يتم العثور على تطابق يمكن اختباره باستخدام الدالة IsBlank . يقوم MatchAll بإرجاع جدول فارغ إذا لم يتم العثور على تطابق يمكن اختباره باستخدام الدالة IsBlank .
إذا كنت تستخدم وظيفة MatchAll لتقسيم سلسلة نصية، ففكر في استخدام وظيفة Split الأسهل والأسرع في استخدامها.
الأنماط
المفتاح لاستخدام هذه الوظائف في وصف النمط للمطابقة. تصف النمط في سلسلة نصية على أنه مزيج من:
- أحرف عادية مثل "abc" أو "123".
- أنماط معرفه مسبقًا، مثل الحرف أو MultipleDigits أو البريد الإلكتروني. (يحدد تعداد المطابقة هذه الأنماط.)
- رموز التعبير العادية، مثل "\d+\s+\d+" أو "[a-z]+".
ادمج هذه العناصر باستخدام عامل سلسلة السلاسل &. على سبيل المثال، "abc" ورقم و"\s+" هو نمط صالح يتطابق مع الأحرف "a" و"b" و"c" متبوعًا برقم من 0 إلى 9 متبوعًا بحرف مسافة واحدة على الأقل.
الأحرف العادية
أبسط نمط هو سلسلة من الأحرف العادية التي سيتم مطابقتها بالضبط.
على سبيل المثال، عند استخدامها مع وظيفة IsMatch، تتطابق السلسلة "مرحبًا" مع النمط "مرحبًا" بالضبط. لا أكثر ولا أقل. لا تتطابق السلسلة "hello!" مع النمط بسبب علامة التعجب في النهاية ولأن الحالة خاطئة للحرف "م". راجع MatchOptions للحصول على طرق لتعديل هذا السلوك.
في لغة النمط، يتم حجز بعض الأحرف لأغراض خاصة. لاستخدام هذه الأحرف، إما أن تسبق الحرف بـ \ (شرطة مائلة للخلف) للإشارة إلى أنه يجب أخذ الحرف حرفيًا، أو استخدام أحد الأنماط المحددة مسبقًا الموضحة لاحقًا في هذا الموضوع. يسرد هذا الجدول الأحرف الخاصة:
حرف خاص | الوصف |
---|---|
. | نقطة أو مسافة |
? | علامة استفهام |
* | علامة نجمة |
+ | الجمع |
( ) | أقواس |
[ ] | أقواس مربعة |
{ } | أقواس متعرجة |
^ | علامة إقحام |
$ | علامة دولار |
| | شريط أو أنبوب عمودي |
\ | شرطة مائلة للخلف |
على سبيل المثال، يمكنك مطابقة "Hello?" باستخدام النمط "Hello\?" مع شرطة مائلة للخلف قبل علامة الاستفهام.
أنماط محددة مسبقًا
توفر الأنماط المحددة مسبقًا طريقة بسيطة لمطابقة إما مجموعة من الشخصيات أو سلسلة من الأحرف المتعددة. استخدم عامل سلسلة السلاسل & لدمج السلاسل النصية الخاصة بك مع أعضاء تعداد المطابقة:
تعداد المطابقة | الوصف | التعبير العادي |
---|---|---|
أي | تطابق أي حرف. | . |
فاصلة | تطابق فاصلة. | , |
ارقام | تتطابق مع رقم واحد ("0" إلى "9"). | \d |
رسَالَة إلكتُرُونية | مطابقة عنوان بريد إلكتروني يحتوي على رمز "at" ("@") واسم المجال الذي يحتوي على نقطة (".") | .+\@.+\\.[^\\.]{2,} |
شحطة | مطابقة شرطة. | \- |
ليفت بارين | مطابقة قوس أيسر "(". | \( |
رسالة | مطابقة حرف. | \p{L} |
متعدد الأرقام | مطابقة واحد أو أكثر من الأرقام. | \d+ |
متعدد الأحرف | مطابقة واحد أو أكثر من الأحرف. | \p{L}+ |
MultipleNonSpaces | مطابقة حرف واحد أو أكثر لا يضيف مسافة بيضاء (وليس مسافة أو علامة تبويب أو سطر جديد). | \S+ |
MultipleSpaces | مطابقة حرف واحد أو أكثر يضيف مسافة بيضاء (مسافة أو علامة تبويب أو سطر جديد). | \s+ |
غير فضائي | مطابقة حرف واحد لا يضيف مسافة بيضاء. | \S |
الأرقام الاختيارية | مطابقة صفر أو رقم واحد أو أكثر. | \d* |
رسائل اختيارية | مطابقة صفر أو حرف واحد أو أكثر. | \p{L}* |
اختياريNonSpaces | مطابقة صفر أو حرف واحد أو أكثر لا تضيف مسافات بيضاء. | \S* |
المساحات الاختيارية | مطابقة صفر أو حرف واحد أو أكثر تضيف مسافات بيضاء. | \s* |
مرحلة زمنية | يطابق نقطة أو علامة نهاية الجملة ("."). | \. |
رايت بارين | مطابقة قوس أيمن ")". | \) |
فضاء | مطابقة حرف يضيف مسافة بيضاء. | \s |
التبويب | مطابقة حرف جدولة. | \t |
على سبيل المثال، سيقوم النمط "A" & MultipleDigits حرف "A" متبوعًا برقم واحد أو أكثر.
التعبيرات العادية
يُعد النمط الذي تستخدمه هذه الوظائف تعبيرًا عاديًا. تساعد الأحرف العادية والأنماط المحددة مسبقًا والموضحة مسبقًا في هذا الموضوع في إنشاء تعبيرات عادية.
تعد التعبيرات العادية قوية جدًا ومتوفرة بالعديد من لغات البرمجة وتستخدم للعديد من الأغراض. يمكن أن تبدو أيضًا في كثير من الأحيان وكأنها سلسلة عشوائية من علامات الترقيم. لا تصف هذه المقالة جميع جوانب التعبيرات العادية، ولكن تتوفر مجموعة كبيرة من المعلومات والبرامج التعليمية والأدوات على الويب.
تأتي التعبيرات العادية في لهجات مختلفة، ويستخدم Power Apps متغير لهجة JavaScript. راجع بناء جملة التعبير العادي لمقدمة إلى بناء الجملة. المطابقات الفرعية المسماة (تسمى أحيانًا مجموعات الالتقاط المسماة) مدعومة:
- المطابقات الفرعية المسماة: (?<الاسم> ...)
- المراجع السابقة المسماة: \k<name>
في جدول تعداد وظيفة Match المذكورة سابقًا في هذا الموضوع، يظهر كل تعداد في نفس الصف مثل تعبيره العادي المقابل.
خيارات المطابقة
يمكنك تعديل سلوك هذه الدالات عن طريق تحديد خيار أو أكثر، يمكنك جمعها باستخدام عامل سلسلة السلاسل (&).
تعداد MatchOptions | الوصف | التأثير على تعبير عادي |
---|---|---|
MatchOptions.Beginsمع | يجب أن يتطابق النمط من بداية النص. | إضافة ^ إلى بداية التعبير العادي. |
MatchOptions.Complete | الإعداد الافتراضي لوظيفة IsMatch. يجب أن يتطابق النمط مع سلسلة النص بالكامل، من البداية إلى النهاية. | إضافة ^ إلى البداية و$ إلى نهاية التعبير العادي. |
MatchOptions.يحتوي | الإعداد الافتراضي لوظيفتي Match وMatchAll. يجب أن يظهر النمط في مكان ما في النص ولكن لا يحتاج إلى بدئه أو إنهائه. | لا يقوم بتعديل التعبير العادي. |
MatchOptions.Endsمع | يجب أن يتطابق النمط مع نهاية سلسلة النص. | إضافة $ إلى نهاية التعبير العادي. |
MatchOptions.IgnoreCase | معاملة الأحرف الكبيرة والصغيرة على أنها متطابقة. افتراضيًا، تكون المطابقة حساسة لحالة الأحرف. | لا يقوم بتعديل التعبير العادي. هذا الخيار هو ما يعادل المعدل "i" القياسي للتعبيرات العادية. |
MatchOptions.Multiline | المطابقة عبر خطوط متعددة. | لا يقوم بتعديل التعبير العادي. هذا الخيار هو ما يعادل المعدل "m" القياسي للتعبيرات العادية. |
يُعد استخدام وظيفة MatchAll مكافئًا لاستخدام معدِّل "g" القياسي للتعبيرات العادية.
بناء الجملة
IsMatch ( نص ، نمط [، خيارات ])
- النص - مطلوب. السلسلة النصية المراد اختبارها.
- نمط - مطلوب. النمط المطلوب اختباره كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
- خيارات - اختياري. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. وبشكل افتراضي، يتم استخدام MatchOptions.Complete.
تطابق ( نص ، نمط [، خيارات ])
- النص - مطلوب. السلسلة النصية المراد مطابقتها.
- نمط - مطلوب. النمط المُراد مطابقته كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
- خيارات - اختياري. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. بشكل افتراضي، يتم استخدام MatchOptions.Contains.
MatchAll ( نص ، نمط [، خيارات ])
- النص - مطلوب. السلسلة النصية المراد مطابقتها.
- نمط - مطلوب. النمط المُراد مطابقته كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
- خيارات - اختياري. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. بشكل افتراضي، يتم استخدام MatchOptions.Contains.
أمثلة IsMatch
الأحرف العادية
تخيل أن تطبيقك الذي يحتوي على عنصر تحكم Text input مسمى TextInput1. يقوم المستخدم بإدخال قيم في عنصر التحكم هذا ليتم تخزينها في قاعدة بيانات.
يكتب المستخدم مرحبًا بالعالم في TextInput1.
صيغة | الوصف | نتيجة |
---|---|---|
IsMatch( TextInput1.Text, "Hello world" ) |
اختبار ما إذا كان إدخال المستخدم يطابق تمامًا السلسلة "مرحبًا بالعالم". | صحيح |
IsMatch( TextInput1.Text, "Good bye" ) |
اختبار ما إذا كان إدخال المستخدم يطابق تمامًا السلسلة "إلى اللقاء". | خطأ |
IsMatch( TextInput1.Text, "hello", Contains ) |
اختبار ما إذا كان إدخال المستخدم يحتوي على كلمة "مرحبًا" (حساس لحالة الأحرف). | خطأ |
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) |
اختبار ما إذا كان إدخال المستخدم يحتوي على كلمة "مرحبًا" (غير حساس لحالة الأحرف). | صحيح |
أنماط محددة مسبقًا
صيغة | الوصف | نتيجة |
---|---|---|
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) |
مطابقة رقم تأمين اجتماعي في الولايات المتحدة | صحيح |
IsMatch( "joan@contoso.com", Email ) |
مطابقة عنوان البريد الإلكتروني | صحيح |
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) |
مطابقة تسلسل من الأرقام، والنقطة، ثم صفر أو أرقام أخرى. | صحيح |
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) |
مطابقة تسلسل من الأرقام، والنقطة، ثم صفر أو أرقام أخرى. لا تظهر نقطة في النص المراد مطابقته، لذا لا يتطابق هذا النمط. | خطأ |
التعبيرات العادية
صيغة | الوصف | نتيجة |
---|---|---|
IsMatch( "986", "\d+" ) |
مطابقة عدد صحيح أكبر من الصفر. | صحيح |
IsMatch( "1.02", "\d+(\.\d\d)?" ) |
مطابقة مبلغ عملة موجب. إذا احتوى الإدخال على علامة عشرية، فيجب أن يحتوي الإدخال أيضًا على حرفين رقميين بعد العلامة العشرية. على سبيل المثال، 3.00 صالحة، ولكن 3.1 ليست كذلك. | صحيح |
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) |
مطابقة مبلغ العملة الموجب أو السالب. إذا احتوى الإدخال على علامة عشرية، فيجب أن يحتوي الإدخال أيضًا على حرفين رقميين بعد العلامة العشرية. | صحيح |
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) |
مطابقة رقم تأمين اجتماعي في الولايات المتحدة للتحقق من تنسيق حقل الإدخال الموفر ونوعه وطوله. يجب أن تتكون السلسلة المراد مطابقتها من ثلاثة أحرف رقمية متبوعة بشرطة، ثم حرفين رقميين متبوعين بشرطة، ثم أربعة أحرف رقمية. | صحيح |
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) |
نفس المثال السابق، ولكن إحدى الشُرُط غير موجودة في الإدخال. | خطأ |
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) |
التحقق من صحة كلمة المرور القوية، التي يجب أن تحتوي على ثمانية أو تسعة أو 10 أحرف، بالإضافة إلى رقم واحد على الأقل وحرف أبجدي واحد على الأقل. يجب ألا تحتوي السلسلة على أحرف خاصة. | خطأ |
أمثلة وظيفتي Match وMatchAll
صيغة | الوصف | نتيجة |
---|---|---|
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" |
استخراج فقط جزء البريد الإلكتروني من معلومات الاتصال. | { البريد الإلكتروني: "bob.jones@contoso.com", FullMatch: "<bob.jones@contoso.com>", SubMatches: [ "bob.jones@contoso.com" ], StartMatch: 11 } |
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" |
استخراج فقط جزء البريد الإلكتروني من معلومات الاتصال. لم يتم العثور على عنوان قانوني (لا توجد علامة @)، لذلك ترجع الوظيفة blank. | خلبي |
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) |
استخراج أجزاء اللغة والبرنامج النصي وأجزاء المنطقة من علامة اللغة التي تقوم وظيفة Language بإرجاعها. وتُظهر هذه النتائج الولايات المتحدة؛ راجع وثائق وظيفة Language للاطلاع على مزيد من الأمثلة. يقوم عامل (?: بتجميع الأحرف من دون إنشاء مطابقة فرعية أخرى. | { language: "en", script: blank, region: "US", FullMatch: "en-US", SubMatches: [ "en", "", "US" ], StartMatch: 1 } |
Match( "PT2H1M39S", "PT(?:<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) |
استخراج الساعات والدقائق والثواني من قيمة مدة ISO 8601. لا تزال الأرقام المستخرجة في سلسلة نصية؛ استخدم وظيفة Value لتحويلها إلى رقم قبل إجراء العمليات الحسابية عليه. | { hours: "2", minutes: "1", seconds: "39", FullMatch: "PT2H1M39S", SubMatches:["2","1","39"], StartMatch: 1 } |
لنتعرف على هذا المثال الأخير. إذا كنت تريد تحويل هذه السلسلة إلى قيمة تاريخ/وقت باستخدام وظيفة Time، يجب أن تمر بالمطابقات الفرعية المسماة بشكل فردي. للقيام بذلك، يمكنك استخدام وظيفة With التي تعمل في السجل الذي تقوم وظيفة Match بإرجاعه:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
بالنسبة إلى هذه الأسئلة، أضف عنصر تحكم Button، وقم بتعيين خاصية OnSelect الخاصة به إلى هذه الصيغة، ثم حدد الزر:
Set( pangram, "The quick brown fox jumps over the lazy dog." )
الصيغة | الوصف | النتيجة |
---|---|---|
Match( pangram, "THE", IgnoreCase ) |
اعثر على كل مطابقات "THE" في السلسلة النصية التي يحتوي عليها متغير pangram. تحتوي السلسلة على مطابقتين، ولكن يتم إرجاع الأولى فقط لأنك تستخدم وظيفتي Match وMatchAll. عمود SubMatches فارغ لأنه لم يتم تحديد مطابقات فرعية. | { FullMatch: "The", SubMatches: [ ], StartMatch: 32 } |
MatchAll( pangram, "the" ) |
اعثر على كل مطابقات "the" في السلسلة النصية التي يحتوي عليها متغير pangram. الاختبار حساس لحالة الأحرف، لذا تم العثور على المثيل الثاني فقط لـ "the". عمود SubMatches فارغ لأنه لم يتم تحديد مطابقات فرعية. | ![]() |
MatchAll( pangram, "the", IgnoreCase ) |
اعثر على كل مطابقات "the" في السلسلة النصية التي يحتوي عليها متغير pangram. في هذه الحالة، يكون الاختبار غير حساس لحالة الأحرف، لذا تم العثور على مثيلي الكلمة. عمود SubMatches فارغ لأنه لم يتم تحديد مطابقات فرعية. | ![]() |
MatchAll( pangram, "\b\wo\w\b" ) |
البحث عن الكلمات المكونة من ثلاثة أحرف مع وجود "o" في المنتصف. لاحظ أنه يتم استبعاد "brown" لأنها ليست كلمة مكونة من ثلاثة أحرف، وبالتالي، لا تتطابق مع "\b" (حدود الكلمة). | ![]() |
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) |
مطابقة جميع الشخصيات بين "fox" و"dog". | { between: "jumps over the lazy", FullMatch: "fox jumps over the lazy dog", SubMatches: [ "jumps over the lazy" ], StartMatch: 17 } |
لرؤية نتائج MatchAll في معرض:
في شاشة فارغة، أدرج عنصر تحكم Gallery فارغًا وعموديًا.
قم بتعيين خاصية Items الخاصة بالمعرض إلى MatchAll( pangram, "\w+" ) أو MatchAll( pangram, MultipleLetters ).
حدد "إضافة عنصر من علامة التبويب إدراج" في منتصف عنصر تحكم gallery لتحديد قالب المعرض.
أضف عنصر تحكم Label إلى قالب المعرض.
قم بتعيين خاصية Text الخاص بالتسمية إلى ThisItem.FullMatch.
المعرض مليء بكل كلمة في نص المثال الخاص بنا. قم بتغيير حجم قالب المعرض والتحكم في التسمية من أجل رؤية جميع الكلمات على شاشة واحدة.