# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Web Forms > آموزش: Regular Expressions in ASP.NET

## z_bluestar

Regular expressions ها یک ابزار بسیار مفید برای کار با متن ها هستند. وقتی شمـا نیاز دارید که مقدار ورودی کـاربر رو اعتبار سنجی کنید یا دنبال فرمت خاصی در String  هستید. یا می خواهید یک متن رو دوباره قالب یندی کنید  می تونید از Regular expressionsها استفاده کنید. 
 بخش اول :

 *Quantifiers**:* Quantifiers یک راه ساده رو برای تعیین یک الگو (pattern) برای Regular expressions را فراهم می کنند که یک کاراکتر یا یک سری از کـاراکترها چند بار می تونن در متن تکرار بشن ، مثال : *شناسه غیر صریح (**non-explicit quantifiers**) :* 
*** "0 یا بیشتر      تکرار می شود"+"1 یا بیشتر      تکرار می شود" *?* "0 یا یک      بار تکرار می شود "
Quantifiers همیشه اشاره دارن به الگوی قبل از خود یعنی متنی که در سمت چپ آنها واقع شده ، مثال:


  
 *شناسه صریح (**explicit quantifiers**) :*  بر این به مشخص کردن دقیق اینکه یک الگو داده شده چند بار در متن تکرار می شود از explicit quantifiers می توان استفاده کرد . explicit quantifiersها از براکت ها "{}" استفاده می کنند . برای مثال :

*· {       * *x{5* حرف x در متن 5 بار تکرار شود
*·* :* x{5,}*حرف x در متن 5 بار یا بیشتر تکرار شود*
·* :* x{,5}*حرف x در متن 5 بار یا کمتر تکرار شود
· : *x{2,3}*حرف x در متن 2 تا 3 بار تکرار شود

----------


## raziee

Regular expressions موضوع پر کاربرد و پر اهمیتی هست که تو سایت تاپیکی برای آموزش کاملش نبوده.
خوشحال شدم که این تاپیک ایجاد شده.
و امیدوارم که این آموزش ادامه هم داشته باشه.

----------


## z_bluestar

*بخش دوم:*


*Meta characters:* 

Meta characters به کاراکترهایی در ساختار Regular expressions گفته می شود که دارای معنایی خاصی هستن . 

·         . (dot) : ساده ترین Meta characters می باشد که با هر کـاراکتری مصابقت دارد اما بیشتر با quantifiers با یک محدوده خاص استفاده میشه . 
·         ^ : برای تطبیق دادن شروع یک متن با الگوی مورد نظر استفاده می شود
·         $ : برای تطبیق دادن پایان یک متن با الگوی مورد نظر استفاده می شود 
·         | (pipe) : برای شرط Or استفاده می شود ببن دو عبارت 
·         () : برای تعیین کردن یک گروه از کـاراکتر بعنوان یک الگو 

مثال : 

 

*Character Classes:* 

Character Classes با hard braces [ ]ها شناخته میشند  آنها لیست ساده ای از کاراکتر ها هستند که می تونن تو یک موقعیت خاص استفاده بشن . نکته مهم :Character Classesها نمی تونن شامل یک کلمه , یک الگو یا یک حرف خاص باشند . 

مثلا برای تعیین کلاس ارقام می تونیم از Character Classesبه این شکل استفاده کنیم : [0123456789] برای نشون دادن یک rang از کاراکتر ها می تونیم از –استفاده کنیم مثال :[0-9],[a-z],[A-Z]  

همچنین شمـا می توانید از کاراکتر ^(carat) برای خنثی کردن یکسری کاراکتر استفاده کنید برای مثال [^aAeEiIoOuU] شامل همه کاراکتر ها بجز vowel character "aeiou"  می شود 

به یاد داشته باشد که کاربرد کاراکتر ^ در  Character Classes متفاوت با Meta characters می باشد  

مثال :

----------


## Hossein_VB

اینم چنتا لینک آموزش کامل :
http://msdn.microsoft.com/en-us/library/ms972966.aspx
http://msdn.microsoft.com/en-us/library/ff650303.aspx
http://msdn.microsoft.com/en-us/libr...validator.aspx
http://msdn.microsoft.com/en-us/library/ms996428.aspx

----------


## z_bluestar

*بخش سـوم :*
*Predefined Set Metacharacters*

----------


## z_bluestar

خود من هم آشنایی کـاملی با Regular Expressions  نداشتم ولی وقتی یاد گرفتم گفتم اینجـا بذارم تا بقیه هم استفاده کنن .
اگه از دوستان و اساتید محترم جایی در حرف های من رو دیدند که به نظرشون اشتباه اومد لطفا حتمـا بگند تا اصلاح کنم .

امیدوارم بدرد بقیه دوستان هم خورده باشه

----------


## Nightbat

آقای راد یک کتاب خوب در این زمینه دارن که خیلی کمک می کنه، به دوستانی که می خوان یاد بگیرن پیشنهاد می کنم از اون استفاده کنن.

----------


## mohsen.nsb44

> آقای راد یک کتاب خوب در این زمینه دارن که خیلی کمک می کنه، به دوستانی که می خوان یاد بگیرن پیشنهاد می کنم از اون استفاده کنن.


 ميشه كتابشو واسه دانلود بزارين؟

----------


## Behrouz_Rad

> ميشه كتابشو واسه دانلود بزارين؟


واسه دانلود؟ شوخی می کنی؟
http://www.barnamenevis.org/sh...d.php?t=120542

----------


## Mostafa_Dindar

سلام

اين هم آموزش خوبيه ، بدردتون ميخوره .

آموزش عبارات با قاعده. 600k rar

----------


## Mostafa_Dindar

> *Meta characters:* 
> 
> Meta characters به کاراکترهایی در ساختار Regular expressions گفته می شود که دارای معنایی خاصی هستن . 
> 
> ·         . (dot) : ساده ترین Meta characters می باشد که با هر کـاراکتری مصابقت دارد اما بیشتر با quantifiers با یک محدوده خاص استفاده میشه . 
> ·         ^ : برای تطبیق دادن شروع یک متن با الگوی مورد نظر استفاده می شود
> ·         $ : برای تطبیق دادن پایان یک متن با الگوی مورد نظر استفاده می شود 
> ·         | (pipe) : برای شرط Or استفاده می شود ببن دو عبارت 
> ·         () : برای تعیین کردن یک گروه از کـاراکتر بعنوان یک الگو 
> ...





در  ادامه توضيحات خوب دوستمون ، كاراكتر "\" يا Backslash كاربرد خاصي دارد و در صورتي كه بخواهيد در Expression تان از MetaCharacter ها هم وجود داشته باشد از اين بك اسلش استفاده ميشود ، به عبارتي معني خاص MetaCharacter  ها را از بين ميبرد .
مثلا همانطور كه در مثال دوستمون ميبينيد اگر بخواهيم هر متني كه باc:\    شروع شود با ^C:\\  برسي كنيم ( دو تا اسلش) . 




> *Character Classes:* 
> 
> Character Classes با hard braces [ ]ها شناخته میشند  آنها لیست ساده ای از کاراکتر ها هستند که می تونن تو یک موقعیت خاص استفاده بشن . نکته مهم :Character Classesها نمی تونن شامل یک کلمه , یک الگو یا یک حرف خاص باشند .


به عبارتي نميتونيم در Character Class ها نميتونيم يك كلمه يا Pattern رو براي جستجو تعريف كنيم ، تنها كاراكترهاي تنها مجاز است .




> به یاد داشته باشد که کاربرد کاراکتر ^ در  Character Classes متفاوت با Meta characters می باشد


به عبارتي MetaCharacter ها ديگر اون معناي خودشون رو داخل ‍‌[] از دست ميدن . مثلا ديگر لازم نيست براي استفاده از متا كاراكترها از بك اسلش استفاده كنيد .

----------


## Mostafa_Dindar

در تكميل مطالب دوست خوبمون لازمه كه چند جمله گفته بشه .

تا اكنون ياد گرفتيم كه چطور از  *[0-9] * براي مشخص كردن كاراكترهاي رقمي يا از 
*[0-9a-zA-Z]* براي كاركترهاي alphanumeric  استفاده كنيم ولي همانطور كه ميبينيد استفاده از اونها كمي اضافه كاري هست ، پس ما از چند MetaCharacter از پيش تعريف شده استفاده ميكنم تا كارمون راحتت تر بشه . 

مثلا d  مشخصه هر كاركتر رقمي هست يعني   *[0-9] يا w  * مشخصه هر كاركتر "حرفي عددي" يعني  alphanumeric  .
كه بايد از 
*[0-9a-zA-Z]*استفاده ميكرديم .

نكته قابل توجه ، همه اين كاركترهاي ويژه با بك اسلش استفاده ميشوند و همچنين تمامي اين كاراكترها در *System.Text.RegularExpressions دات نت* تعريف شده هستند . ممكن هست اينها در php يا ديگر زبانها همين معني را بدهند يا معني متفاوتي داشته باشند .



> *بخش سـوم :*
> *Predefined Set Metacharacters*


احساس كردم جاي چند تا مثال خالي بود

----------


## z_bluestar

این هم یه نمونه از کاربرد کلاس Regular Expressions در C#‎‎

    //Validate a string
            string ZipCode = "12345";
            String ZipRegex = @"^\d{5}$";
            if (System.Text.RegularExpressions.Regex.IsMatch(ZipC  ode, ZipRegex))
                Response.Write("ZIP is valid!");
            else
               Response.Write("ZIP is invalid!");


            //Match a string 
            string SearchString = "How much wood could a woodchuck chuck if a woodchuck could chuck wood?";
            string MatchExpression = "wood";
            System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(Searc  hString, MatchExpression);

            int MatchCount = matches.Count;
            string Matcheslabel = "";
            foreach (System.Text.RegularExpressions.Match match in matches)
            {
                Matcheslabel += "Found " + match.ToString() + " at position " + match.Index + ".<br>";
            }

            //Replace a string 
            string NewString = System.Text.RegularExpressions.Regex.Replace(Searc  hString, "wood" , "New Word");]

----------


## z_bluestar

یک نمونه از کـاربرد Regular Expressions در Web form ها

<table  cellpadding="5" cellspacing="0" border="0">
                <tr>
                    <td>Email:</td>
                    <td><asp:TextBox id="EmailTextBox" runat="server" Width="238px"></asp:TextBox></td>
                    <td>
                        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="Email required." Text="*" ControlToValidate="EmailTextBox" />
                        <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Invalid Email" Text="*" ControlToValidate="EmailTextBox" ValidationExpression="[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}" />
                    </td>
                </tr>
            </table>

----------


## Mostafa_Dindar

سلام ،

اين هم يك Cheat sheet در مورد عبارات باقاعده كه از لينك معرفي شده توسط آقاي موسوي پيدا كردم ...

اميدوارم بدردتون بخوره

----------


## masoodp666

خیلی خوب بود و بسیار پر استفاده
ممنون از همه دوستان

این هم یه ذره مثال بیشتر و گویا تر

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

----------


## rezabehboodi0098

با سلام من میخام تو کاراکتر اینا نباشن : "/.,-" و...

----------

