الدالات IsMatch، وMatch، وMatchAll

تنطبق على: تطبيقات اللوحة التطبيقات التي تستند إلى النماذج Power Pages Power Platform CLI

اختبارات لمطابقة أو استخراج أجزاء من سلسلة نصية بناءً على نمط.

‏‏الوصف

تختبر وظيفة IsMatch ما إذا كانت سلسلة نصية تتطابق مع نمط يمكن أن يشتمل على أحرف عادية أو أنماط محددة مسبقًا أو تعبيرًا منتظمًا. تقوم وظيفتا Match وMatchAll إرجاع ما تم مطابقته، بما في ذلك المطابقات الفرعية.

استخدم وظيفة IsMatch للتحقق مما كتبه المستخدم في عنصر تحكم Text input. على سبيل المثال، يمكنك تأكيد ما إذا كان المستخدم قد أدخل عنوان بريد إلكتروني صالحًا قبل حفظ النتيجة في مصدر البيانات. إذا لم يتطابق الإدخال مع معاييرك، فأضف عناصر تحكم أخرى تطالب المستخدم بتصحيح الإدخال.

استخدم Match لاستخراج السلسلة النصية الأولي التي تطابق النمط وMatchAll لاستخراج جميع السلاسل النصية المطابقة. يمكنك أيضًا استخراج المطابقات الفرعية لتحليل السلاسل المعقدة.

تقوم وظيفة Match بإرجاع سجل معلومات المطابقة الأولى التي تم العثور عليها، وتقوم وظيفة MatchAll بإرجاع جدول السجلات لكل مطابقة تم العثور عليها. يحتوي السجل أو السجلات على:

Column نوع الوصف
المسمى المطابقة الفرعية أو المطابقات الفرعية نص سيكون لكل عمود فرعي مسمى عموده الخاص. قم بإنشاء تطابق فرعي مسمى باستخدام (?<الاسم>...) في التعبير المنتظم. إذا كانت مطابقة فرعية مسماة لها نفس اسم أحد الأعمدة المحددة مسبقًا (أدناه)، تكون للمطابقة الفرعية الأسبقية، ويتم إنشاء تحذير. لتجنب هذا التحذير، أعد تسمية المطابقة الفرعية.
FullMatch النص كل السلسلة النصية المطابقة.
StartMatch الرقم موضع البداية للمطابقة ضمن سلسلة نص الإدخال. يقوم الحرف الأول من السلسلة بإرجاع 1.
SubMatches جدول أحادي العمود للنص (عمود القيمة) جدول التطابقات الفرعية المسماة وغير المسماة بالترتيب الذي تظهر به في التعبير العادي. بشكل عام، يسهل استخدام المطابقات الفرعية المسماة ويتم تشجيعها. استخدم وظيفة ForAll أو وظائف Last( FirstN( ... ) ) للعمل مع مطابقة فرعية فردية. إذا لم يتم تحديد مطابقات فرعية في التعبير العادي، فسيظهر هذا الجدول ولكنه فارغ.

تدعم هذه الوظائف MatchOptions. بشكل افتراضي:

  • تؤدي هذه الوظائف مطابقة حساسة لحالة الأحرف. استخدم MatchOptions.IgnoreCase لإجراء مطابقات غير حساسة لحالة الأحرف.
  • تقوم وظيفة IsMatch بمطابة السلسلة النصية الكاملة (إكمال MatchOption)، بينما تبحث وظيفتا Match وMatchAll عن مطابقة في أي مكان في السلسلة النصية (يحتوي على MatchOption). استخدم الكامل أو يحتوي على أو BeginsWith أو EndsWith حسب ما يتناسب مع السيناريو الخاص بك.

تقوم وظيفة IsMatch بإرجاع صواب إذا كانت السلسلة النصية تطابق النمط أو خطأ إذا لم يكن الأمر كذلك. تقوم وظيفة Match بإرجاع ‎blank في حالة عدم العثور على أي مطابقة يمكن اختبارها باستخدام وظيفة IsBlank. تقوم وظيفة MatchAll بإرجاع جدول فارغ في حالة عدم العثور على أي مطابقة يمكن اختبارها باستخدام وظيفة IsEmpty.

إذا كنت تستخدم وظيفة MatchAll لتقسيم سلسلة نصية، ففكر في استخدام وظيفة Split الأسهل والأسرع في استخدامها.

الأنماط

المفتاح لاستخدام هذه الوظائف في وصف النمط للمطابقة. تصف النمط في سلسلة نصية على أنه مزيج من:

  • أحرف عادية مثل "‏abc‏" أو "‏123".
  • أنماط معرفه مسبقًا، مثل الحرف أو MultipleDigits أو البريد الإلكتروني. (يحدد تعداد المطابقة هذه الأنماط.)
  • رموز التعبير العادية، مثل "‏\d+\s+\d+" أو "‏[a-z]+".

ادمج هذه العناصر باستخدام عامل سلسلة السلاسل &. على سبيل المثال، "‏abc" ورقم و"‏\s+" هو نمط صالح يتطابق مع الأحرف "a" و"b" و"c" متبوعًا برقم من 0 إلى 9 متبوعًا بحرف مسافة واحدة على الأقل.

الأحرف العادية

أبسط نمط هو سلسلة من الأحرف العادية التي سيتم مطابقتها بالضبط.

على سبيل المثال، عند استخدامها مع وظيفة IsMatch، تتطابق السلسلة "مرحبًا" مع النمط "مرحبًا" بالضبط. لا أكثر ولا أقل. لا تتطابق السلسلة "hello!" مع النمط بسبب علامة التعجب في النهاية ولأن الحالة خاطئة للحرف "م". راجع MatchOptions للحصول على طرق لتعديل هذا السلوك.

في لغة النمط، يتم حجز بعض الأحرف لأغراض خاصة. لاستخدام هذه الأحرف، إما أن تسبق الحرف بـ \ (شرطة مائلة للخلف) للإشارة إلى أنه يجب أخذ الحرف حرفيًا، أو استخدام أحد الأنماط المحددة مسبقًا الموضحة لاحقًا في هذا الموضوع. يسرد هذا الجدول الأحرف الخاصة:

حرف خاص الوصف
. نقطة أو مسافة
? علامة استفهام
* علامة نجمة
+ الجمع
( ) أقواس
[ ] أقواس مربعة
{ } أقواس متعرجة
^ علامة إقحام
$ علامة دولار
| شريط أو أنبوب عمودي
\ شرطة مائلة للخلف

على سبيل المثال، يمكنك مطابقة "Hello?" باستخدام النمط "Hello\?" مع شرطة مائلة للخلف قبل علامة الاستفهام.

أنماط محددة مسبقًا

توفر الأنماط المحددة مسبقًا طريقة بسيطة لمطابقة إما مجموعة من الشخصيات أو سلسلة من الأحرف المتعددة. استخدم عامل سلسلة السلاسل & لدمج السلاسل النصية الخاصة بك مع أعضاء تعداد المطابقة:

تعداد المطابقة ‏‏الوصف التعبير العادي
Any تطابق أي حرف. .
Comma تطابق فاصلة. ,
Digit تتطابق مع رقم واحد ("0" إلى "9"). \d
Email مطابقة عنوان بريد إلكتروني يحتوي على رمز "at" ("@") واسم المجال الذي يحتوي على نقطة (".") .+\@.+\\.[^\\.]{2,}
Hyphen مطابقة شرطة. \-
LeftParen مطابقة قوس أيسر "(". \(
Letter مطابقة حرف. \p{L}
MultipleDigits مطابقة واحد أو أكثر من الأرقام. \d+
MultipleLetters مطابقة واحد أو أكثر من الأحرف. \p{L}+
MultipleNonSpaces مطابقة حرف واحد أو أكثر لا يضيف مسافة بيضاء (وليس مسافة أو علامة تبويب أو سطر جديد). \S+
MultipleSpaces مطابقة حرف واحد أو أكثر يضيف مسافة بيضاء (مسافة أو علامة تبويب أو سطر جديد). \s+
NonSpace مطابقة حرف واحد لا يضيف مسافة بيضاء. \S
OptionalDigits مطابقة صفر أو رقم واحد أو أكثر. \d*
OptionalLetters مطابقة صفر أو حرف واحد أو أكثر. \p{L}*
OptionalNonSpaces مطابقة صفر أو حرف واحد أو أكثر لا تضيف مسافات بيضاء. \S*
OptionalSpaces مطابقة صفر أو حرف واحد أو أكثر تضيف مسافات بيضاء. \s*
Period يطابق نقطة أو علامة نهاية الجملة ("."). \.
RightParen مطابقة قوس أيمن ")". \)
Space مطابقة حرف يضيف مسافة بيضاء. \s
علامة التبويب مطابقة حرف جدولة. \t

على سبيل المثال، سيقوم النمط "A" & MultipleDigits حرف "A" متبوعًا برقم واحد أو أكثر.

التعبيرات العادية

يُعد النمط الذي تستخدمه هذه الوظائف تعبيرًا عاديًا. تساعد الأحرف العادية والأنماط المحددة مسبقًا والموضحة مسبقًا في هذا الموضوع في إنشاء تعبيرات عادية.

تعد التعبيرات العادية قوية جدًا ومتوفرة بالعديد من لغات البرمجة وتستخدم للعديد من الأغراض. يمكن أن تبدو أيضًا في كثير من الأحيان وكأنها سلسلة عشوائية من علامات الترقيم. لا تصف هذه المقالة جميع جوانب التعبيرات العادية، ولكن تتوفر مجموعة كبيرة من المعلومات والبرامج التعليمية والأدوات على الويب.

تأتي التعبيرات العادية في لهجات مختلفة، ويستخدم Power Apps متغير لهجة JavaScript. راجع بناء جملة التعبير العادي لمقدمة إلى بناء الجملة. المطابقات الفرعية المسماة (تسمى أحيانًا مجموعات الالتقاط المسماة) مدعومة:

  • المطابقات الفرعية المسماة: (?<الاسم> ...)
  • المراجع السابقة المسماة: \k<name>

في جدول تعداد وظيفة Match المذكورة سابقًا في هذا الموضوع، يظهر كل تعداد في نفس الصف مثل تعبيره العادي المقابل.

خيارات المطابقة

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

تعداد MatchOptions الوصف التأثير على تعبير عادي
MatchOptions.BeginsWith يجب أن يتطابق النمط من بداية النص. إضافة ^ إلى بداية التعبير العادي.
MatchOptions.Complete الإعداد الافتراضي لوظيفة IsMatch. يجب أن يتطابق النمط مع سلسلة النص بالكامل، من البداية إلى النهاية. إضافة ^ إلى البداية و$ إلى نهاية التعبير العادي.
MatchOptions.Contains الإعداد الافتراضي لوظيفتي Match وMatchAll. يجب أن يظهر النمط في مكان ما في النص ولكن لا يحتاج إلى بدئه أو إنهائه. لا يقوم بتعديل التعبير العادي.
MatchOptions.EndsWith يجب أن يتطابق النمط مع نهاية سلسلة النص. إضافة $ إلى نهاية التعبير العادي.
MatchOptions.IgnoreCase معاملة الأحرف الكبيرة والصغيرة على أنها متطابقة. افتراضيًا، تكون المطابقة حساسة لحالة الأحرف. لا يقوم بتعديل التعبير العادي. هذا الخيار هو ما يعادل المعدل "i" القياسي للتعبيرات العادية.
MatchOptions.Multiline المطابقة عبر خطوط متعددة. لا يقوم بتعديل التعبير العادي. هذا الخيار هو ما يعادل المعدل "m" القياسي للتعبيرات العادية.

يُعد استخدام وظيفة MatchAll مكافئًا لاستخدام معدِّل "g" القياسي للتعبيرات العادية.

بناء الجملة

IsMatch( النص، النمطالخيارات ] )

  • Text – مطلوب. السلسلة النصية المراد اختبارها.
  • النمط – مطلوب. النمط المطلوب اختباره كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
  • الخيارات – اختيارية. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. وبشكل افتراضي، يتم استخدام MatchOptions.Complete.

Match( النص، النمطالخيارات ] )

  • Text – مطلوب. السلسلة النصية المراد مطابقتها.
  • النمط – مطلوب. النمط المُراد مطابقته كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
  • الخيارات – اختيارية. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. بشكل افتراضي، يتم استخدام MatchOptions.Contains.

MatchAll( النص، النمطالخيارات ] )

  • Text – مطلوب. السلسلة النصية المراد مطابقتها.
  • النمط – مطلوب. النمط المُراد مطابقته كسلسلة نصية. ربط الأنماط المحددة مسبقًا والتي يحددها تعداد وظيفة Match أو توفير تعبير عادي. يجب أن يكون النمط صيغة ثابتة بدون أي متغيرات أو مصادر بيانات أو مراجع ديناميكية أخرى تتغير أثناء تشغيل التطبيق.
  • الخيارات – اختيارية. تركيبة سلسلة نصيه من قيم تعداد MatchOptions. بشكل افتراضي، يتم استخدام MatchOptions.Contains.

أمثلة IsMatch

الأحرف العادية

تخيل أن تطبيقك الذي يحتوي على عنصر تحكم Text input مسمى TextInput1. يقوم المستخدم بإدخال قيم في عنصر التحكم هذا ليتم تخزينها في قاعدة بيانات.

يكتب المستخدم مرحبًا بالعالم في TextInput1.

صيغة ‏‏الوصف نتيجة
IsMatch( TextInput1.Text, "Hello world" ) اختبار ما إذا كان إدخال المستخدم يطابق تمامًا السلسلة "مرحبًا بالعالم". true
IsMatch( TextInput1.Text, "Good bye" ) اختبار ما إذا كان إدخال المستخدم يطابق تمامًا السلسلة "إلى اللقاء". false
IsMatch( TextInput1.Text, "hello", Contains ) اختبار ما إذا كان إدخال المستخدم يحتوي على كلمة "مرحبًا" (حساس لحالة الأحرف). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) اختبار ما إذا كان إدخال المستخدم يحتوي على كلمة "مرحبًا" (غير حساس لحالة الأحرف). true

أنماط محددة مسبقًا

صيغة ‏‏الوصف نتيجة
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) مطابقة رقم تأمين اجتماعي في الولايات المتحدة true
IsMatch( "joan@contoso.com", Email ) مطابقة عنوان البريد الإلكتروني true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) مطابقة تسلسل من الأرقام، والنقطة، ثم صفر أو أرقام أخرى. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) مطابقة تسلسل من الأرقام، والنقطة، ثم صفر أو أرقام أخرى. لا تظهر نقطة في النص المراد مطابقته، لذا لا يتطابق هذا النمط. false

التعبيرات العادية

صيغة ‏‏الوصف نتيجة
IsMatch( "986", "\d+" ) مطابقة عدد صحيح أكبر من الصفر. true
IsMatch( "1.02", "\d+(\.\d\d)?" ) مطابقة مبلغ عملة موجب. إذا احتوى الإدخال على علامة عشرية، فيجب أن يحتوي الإدخال أيضًا على حرفين رقميين بعد العلامة العشرية. على سبيل المثال، 3.00 صالحة، ولكن 3.1 ليست كذلك. true
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) مطابقة مبلغ العملة الموجب أو السالب. إذا احتوى الإدخال على علامة عشرية، فيجب أن يحتوي الإدخال أيضًا على حرفين رقميين بعد العلامة العشرية. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) مطابقة رقم تأمين اجتماعي في الولايات المتحدة للتحقق من تنسيق حقل الإدخال الموفر ونوعه وطوله. يجب أن تتكون السلسلة المراد مطابقتها من ثلاثة أحرف رقمية متبوعة بشرطة، ثم حرفين رقميين متبوعين بشرطة، ثم أربعة أحرف رقمية. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) نفس المثال السابق، ولكن إحدى الشُرُط غير موجودة في الإدخال. false
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) التحقق من صحة كلمة المرور القوية، التي يجب أن تحتوي على ثمانية أو تسعة أو 10 أحرف، بالإضافة إلى رقم واحد على الأقل وحرف أبجدي واحد على الأقل. يجب ألا تحتوي السلسلة على أحرف خاصة. false

أمثلة وظيفتي 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. 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.
MatchAll( pangram, "the", IgnoreCase ) اعثر على كل مطابقات "the" في السلسلة النصية التي يحتوي عليها متغير pangram. في هذه الحالة، يكون الاختبار غير حساس لحالة الأحرف، لذا تم العثور على مثيلي الكلمة. عمود SubMatches فارغ لأنه لم يتم تحديد مطابقات فرعية. MatchAll مع IgnoreCase.
MatchAll( pangram, "\b\wo\w\b" ) البحث عن الكلمات المكونة من ثلاثة أحرف مع وجود "o" في المنتصف. لاحظ أنه يتم استبعاد "brown" لأنها ليست كلمة مكونة من ثلاثة أحرف، وبالتالي، لا تتطابق مع "\b" (حدود الكلمة). MatchAll لـ pangram مع b، وwo، وw، و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 في معرض:

  1. في شاشة فارغة، أدرج عنصر تحكم Gallery فارغًا وعموديًا.

  2. قم بتعيين خاصية Items الخاصة بالمعرض إلى MatchAll( pangram, "\w+" ) أو MatchAll( pangram, MultipleLetters ).

    معرض العناصر.

  3. حدد "إضافة عنصر من علامة التبويب إدراج" في منتصف عنصر تحكم gallery لتحديد قالب المعرض.

  4. أضف عنصر تحكم Label إلى قالب المعرض.

  5. قم بتعيين خاصية Text الخاص بالتسمية إلى ThisItem.FullMatch.

    المعرض مليء بكل كلمة في نص المثال الخاص بنا. قم بتغيير حجم قالب المعرض والتحكم في التسمية من أجل رؤية جميع الكلمات على شاشة واحدة.

    خاصية النص.