alternation و Subexpressions

يمكنك alternation في تعبير عادي إلى مجموعة الخيارات بين البدائل أو أكثر. يمكنك بشكل أساسي بتحديد "هذا أو ذلك" في نقش.

تمكنك subexpressions في لمطابقة نمط نص searched وتقسيم المطابقة في في فصل submatches. يمكن استرداد submatches الناتجة بواسطة البرنامج. subexpressions أيضا تتيح لك إلى إعادة تنسيق نص، كما هو موضح في Backreferences في JScript.

ل المزيد المعلومات حول تعابير عادية، راجع قم بإنشاء تعبير عاديو تعبير عادي بناء الجملة.

alternation

يمكنك استخدام حرف توجيه الإخراج (|) في إلى تحديد اختيار بين الثاني أو المزيد البدائل. Th هو هو يعرف alternation . التعبير ممكن الأكبر تشغيل كلا جانبي حرف توجيه الإخراج هو متطابق. قد تعتقد التي التالية Jscriptتعبير يطابق "فصل" أو "مقطع" متبوعة أو خانتين رقميتين.

/Chapter|Section [1-9][0-9]{0,1}/

بدلاً من ذلك، تعبير عادي مطابقة الكلمة "مقطع" أو كلمة "فصل" واتبع أي الأرقام التي. إذا كانت السلسلة searched هو "مقطع 22"، يطابق التعبير "مقطع 22". ومع ذلك، إذا كانت السلسلة searched هو "22 فصل"، يطابق التعبير كلمة "فصل" بدلاً من التلائمات "22 فصل".

alternation مع أقواس

يمكنك استخدام الأقواس لتقييد نطاق alternation، التي هو، للتأكد من أن تطبيقه فقط كلمتين "فصل" و "مقطع". بواسطة إضافة أقواس، يمكنك جعل تعبير عادي تتطابق مع "القسم 3" أو "فصل 1".

أقواس، على الرغم من ذلك، يتم أيضا استخدام إلى إنشاء subexpression. يمكن استرداد submatch الناتجة بواسطة البرنامج.

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

/(Chapter|Section) [1-9][0-9]{0,1}/

الأقواس الموجودة حول Chapter|Sectionتؤدي أيضا إلى حدوث أي من كلمتين متطابقة أن تم الحفظ للاستخدام المستقبلي.

يظهر المثال التالي كيفية التلائمات و submatches يمكن استرداد في تعليمات برمجية. نظراً لوجود التعيين واحدة فقط من الأقواس في التعبير، هناك واحد فقط تم الحفظ submatch.

var re = /(Chapter|Section) [1-9][0-9]{0,1}/g
var src = "Chapter 50  Section 85"
ShowMatches(src, re);

// Output:
//  Chapter 50
//  submatch 1: Chapter

//  Section 85
//  submatch 1: Section

// Perform a search on a string by using a regular expression,
// and display the matches and submatches.
function ShowMatches(src, re)
{
    var result;

    // Get the first match.
    result = re.exec(src);
    
    while (result != null)
    {
        // Show the entire match.
        print();
        print(result[0]);

        // Show the submatches.
        for (var index=1; index<result.length; index++)
            {
                print("submatch " + index + ": " + result[index]);
            }

        // Get the next match.
        result = re.exec(src);
    }
}

alternation بدون Submatch المحفوظة

في المثال السابق، أردت فقط إلى استخدام الأقواس إلى مجموعة اختيار بين الكلمات "فصل" و "مقطع".

إلى منع submatch تم حفظها للاستخدام لاحقاً، يمكنك تحديد (?:نمط) subexpression . يقوم المثال التالي بنفس الشيء عند السابق المثال، ولكنه لا يحفظ في submatch.

var re = /(?:Chapter|Section) [1-9][0-9]{0,1}/g
var src = "Chapter 50  Section 85"
ShowMatches(src, re);
// Output:
//  Chapter 50
//  Section 85

subexpressions

وضع الأقواس في تعبير عادي يقوم بإنشاء subexpression. يمكن استرداد submatch الناتجة بواسطة البرنامج.

في المثال التالي، تعبير عادي يحتوي على ثلاثة subexpressions. يتم عرض السلاسل submatch مع كل مطابقة.

var re = /(\w+)@(\w+)\.(\w+)/g
var src = "Please send mail to george@contoso.com and someone@example.com. Thanks!"
ShowMatches(src, re);
// The ShowMatches function is provided earlier.

// Output:
//  george@contoso.com
//  submatch 1: george
//  submatch 2: contoso
//  submatch 3: com

//  someone@example.com
//  submatch 1: someone
//  submatch 2: example
//  submatch 3: com

يلي مثال يفصل مؤشر الموارد العالمية (URI) في أجزاء مكوّن.

أول parenthetical subexpression بحفظ جزء البروتوكول من العنوان ويب. يطابق أي الكلمة الذي يأتي قبل نقطتين واثنين إعادة توجيه مكالمة يحتوي على خطوط مائلة. subexpression parenthetical الثاني بحفظ جزء عنوان مجال من العنوان. التلائمات أي تسلسل من حرف/ حروف التي لا تضمين الشرطة المائلة علامة (/) أو علامة النقطتين (:) حرف/ حروف. subexpression parenthetical الثالث بحفظ رقم منفذ موقع، إذا كان ملف هو المحدد. يطابق صفر أو المزيد الأرقام بعد نقطتين. subexpression parenthetical الرابعة بحفظ معلومات مسار و/او الصفحة المحددة بواسطة العنوان ويب. يطابق صفر أو أكثر حرف s مختلف عن علامة الرقم حرف (#) أو المساحة حرف.

var re = /(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/gi;
var src = "https://msdn.microsoft.com:80/scripting/default.htm";
ShowMatches(src, re);

// Output:
//  https://msdn.microsoft.com:80/scripting/default.htm
//  submatch 1: http
//  submatch 2: msdn.microsoft.com
//  submatch 3: :80
//  submatch 4: /scripting/default.htm

موجب و سالب Lookaheads

lookahead موجب هو بحث فيه، بعد مطابقة هو العثور على، البحث عن التطابق التالي يبدأ قبل نص متطابق. المباراة هو لم يتم حفظها لاستخدامها لاحقاً. إلى lookahead موجبة تحديد، استخدم بناء الجملة (?=نقش) .

في المثال التالي، بحث هو تنفيذ لتقرر ما إذا كانت كلمة مرور هو بطول 4 إلى 8 أحرف ويحتوي على رقم واحد على الأقل.

في العادية تعبير، .*\dالعثور على أي عدد من حرف/ حروف متبوعاً برقم. سلسلة searched "abc3qr"، وهذا التلائمات "abc3". البداية قبل بدلاً من بعد ذلك التلائمات، .{4,8} التلائمات عم سلسلة الأحرف من 4 إلى 8. وهذا التلائمات "abc3qr".

^و $تحديد المواضع في يبدأ ونهاية سلسلة searched. Th هو هو لمنع مطابقة إذا كانت السلسلة searched تحتوي على أية أحرف خارج أحرف متطابقة.

var re = /^(?=.*\d).{4,8}$/gi
var src = "abc3qr"
ShowMatches(src, re);
// The ShowMatches function is provided earlier.
// Output:
//  abc3qr

lookahead سالبة بالبحث عن سلسلة بحث لا يطابق النمط في تعبير lookahead سالبة. بعد مطابقة هو العثور على، بحث عن التطابق التالي يبدأ قبل نص متطابق. المباراة هو لم يتم حفظها لاستخدامها لاحقاً. إلى تحديد lookahead سالبة، استخدم بناء الجملة (?!نقش) .

يلي مثال مطابقة الكلمات التي لا تبدأ باستخدام "ترتيب".

في تعبير عادي، \bيطابق حد كلمة. سلسلة searched "سريع"، وهذا التلائمات المسافة الأولى. (?!th)يطابق سلسلة التي هو غير "ترتيب". وهذا التلائمات "qu". البدء قبل أن تتطابق، \w+التلائمات كلمة. وهذا التلائمات "سريع".

var re = /\b(?!th)\w+\b/gi
var src = "The quick brown fox jumps over the lazy dog."
ShowMatches(src, re);
// Output:
//  quick
//  brown
//  fox
//  jumps
//  over
//  lazy
//  dog

راجع أيضًا:

المبادئ

Backreferences في JScript

موارد أخرى

مقدمة إلى تعابير عادية