Latest web development tutorials

التعبير العادية - قواعد مطابقة

مطابقة النمط الأساسي

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

^once

ويتضمن هذا النموذج طابع خاص ^، مشيرا إلى أن نمط مباريات فقط مرة واحدة تلك التي تبدأ مع سلسلة. على سبيل المثال، سلسلة نمط "كان ياما كان" مباراة لا يتطابق "كان هناك ذات مرة رجل من نيويورك". كما يشير هذا الرمز ^ بداية من نفسه، و$ الرموز لتتطابق مع تلك السلاسل في نهاية وضع معين.

bucket$

نموذج و"من حافظ كل هذا النقد في دلو" مباراة لا يتطابق مع "مجموعات". ^ و$ الأحرف عند استخدامها في وقت واحد، لأنها تمثل تطابق تام (وضع سلسلة ع). على سبيل المثال:

^bucket$

مباريات فقط السلسلة "دلو". إذا لا يتضمن النموذج ^ و$، أنه يحتوي على سلسلة لتتناسب مع أي من نمط. على سبيل المثال: الوضع

once

مع سلسلة

There once was a man from NewYork
Who kept all of his cash in a bucket.

المباراة.

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

^\t 

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

مجموعة الأحرف

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

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

[AaEeIiOoUu]

هذا النسق مع أية أحرف العلة، ولكن لا تمثل سوى شخصية. مع واصلة يمكن أن تمثل مجموعة من الأحرف، مثل:

[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

وبالمثل، فإن هذه لا تمثل سوى حرف، وهذا هو المهم جدا. إذا كنت تريد أن تطابق حرف صغير واحدا تلو واحد من سلسلة من الأرقام، مثل "Z2"، "T6" أو "G7"، ولكن ليس "AB2"، "r2d3" أو "B52"، ثم استخدام هذا النمط:

^[a-z][0-9]$

على الرغم من أن [من الألف إلى الياء] نيابة عن 26 حرفا للطائفة، ولكن هنا ليست سوى الحرف الأول صغيرة مطابقة السلسلة.

وكما ذكر سابقا ^ يمثل بداية السلسلة، ولكن لديها أيضا معنى آخر. عندما تستخدم في مجموعة من الأقواس المعقوفة ^ غير أن ذلك يعني "لا" أو وسيلة "الإقصاء"، وغالبا ما تستخدم للقضاء على حرف. أيضا استخدام المثال السابق، نطلب الحرف الأول لا يمكن أن يكون عدد:

^[^0-9][0-9]$

هذا الوضع "و 5"، "G7" و "-2" يتم مطابقة، ولكن مع "12"، "66" ليست مباراة. وفيما يلي بعض الأمثلة على استبعاد شخصيات محددة:

[^a-z] //除了小写字母以外的所有字符 
[^\\\/\^] //除了(\)(/)(^)之外的所有字符 
[^\"\'] //除了双引号(")和单引号(')之外的所有字符

طابع خاص "." (النقطة، نقطة) في التعبير العادي تستخدم لتمثيل بالإضافة إلى "الخط الجديد" لجميع الشخصيات. وبالتالي فإن نمط "^ 0.5 $" وأي حرفين إلى نهاية رقم (5) وسلسلة مباراة في شخصية أخرى غير "الخط الجديد" في بداية. الوضع. "" هل تطابق اي سلسلة، بالإضافة إلى سلسلة فارغة، ويتضمن سوى "سلسلة سطر جديد".

PHP التعبير العادية وقد بنيت في بعض العنقودية شخصية عالمية، والقائمة على النحو التالي:

字符簇 描述
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

موافق المتكررة

حتى الآن، كنت تعرف كيفية تطابق حرف أو رقم، ولكن أكثر الحالات، قد تحتاج لمطابقة كلمة أو مجموعة من الأرقام. كلمة لديها عدد من الرسائل، ومجموعة من العديد من الشخصيات في عدد فردي. مع الحرف أو الأحرف وراء مجموعة من الأقواس المتعرجة ({}) يستخدم لتحديد عدد يكرر المحتوى السابق.

字符簇 描述
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行
a{2,} 如:baad和aaa,但Nantucket不行
\t{2} 两个制表符
.{2} 所有的两个字符

تصف هذه الأمثلة استخدام ثلاثة أقواس مختلفة. عدد، {س} يعني "الحرف أو الأحرف أمام الكتلة لا يظهر إلا مرة س"، فاصلة العدد، {س،} يعني "يظهر محتوى أمام عدد المرات x أو أكثر"، واثنتان مع مفصولة بفواصل أرقام، {س، ص} ان "محتوى أمام تظهر مرات على الأقل العاشر، ولكن ليس أكثر من مرة ذ." يمكننا توسيع نطاق نموذج لأكثر من الكلمات أو الأرقام:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$ //所有的正数 
^\-{0,1}[0-9]{1,}$ //所有的整数 
^[-]?[0-9]+\.?[0-9]+$ //所有的浮点数

المثال الأخير ليست مفهومة جيدا، أليس كذلك؟ حتى Kanba: (؟ [-] (). \) وجميع بعلامة ناقص اختياري في بداية (^)، تليها واحدة أو أكثر من أرقام ([0-9] +)، ونقطة عشرية نقاش على واحد أو أكثر من أرقام ([0-9] +)، ولم يتبع من قبل أي شيء آخر ($). أدناه سوف تعرف أكثر طريقة بسيطة يمكن استخدامها.

"؟" والأحرف الخاصة {0،1} متساوية، إلا أنها تمثل: "0 أو 1 أمام 'أو' أمام المحتوى هو اختياري." لذلك يمكن تبسيط مجرد أمثلة على النحو التالي:

^\-?[0-9]{1,}\.?[0-9]{1,}$

الطابع الخاص "*" و {0،} متساوية، وأنهم جميعا يمثلون "0 أو أكثر من المحتوى السابقة." وأخيرا، والشخصيات "+" و {1} متساوية، فإنه يشير إلى "1 أو أكثر من المحتوى السابقة"، لذلك يمكن كتابة الأربعة الأمثلة المذكورة أعلاه على النحو التالي:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 
^[0-9]+$ //所有的正数 
^\-?[0-9]+$ //所有的整数 
^\-?[0-9]*\.?[0-9]*$ //所有的浮点数

بالطبع، هذا لا يقلل جذري في التعقيد التقني من التعابير العادية، ولكن يمكن جعلها أسهل للقراءة.