ورود

View Full Version : چند سوال درباره نحوه کار RegExp در javascript



alismith
جمعه 28 بهمن 1390, 15:12 عصر
سلام

دوستان مهندس من در رابطه با RegExp و تعریف pattern چند تا سوال داشتم

فرض کنید این رشته من باشه :

//test my name

var name = "alismith";

// set my id :

var id = 444+777;
<p>ali</p>

حالا میخام بدونم چطوری این خطوط رو کنترل کنم، مثلا به خطوطی که comment هستن یک span اضافه کنم و به کلماتی مشخص span مربوط به خودش رو اضافه کنم مثلا در این رشته کلمه var،
و سوال مهم تر تگ های html هستش، مثلا چطوری و با چه pattrenی تگ p را نمایش بدم که فقط نمایش داده بشه و کاربردی نداشته باشه، مثلا چطوری از &lt; و $ در replace استفاده کنم

لطف می کنید با یک مثال کاربردی و عملی جواب من رو بدید تا کامل متوجه بشم و بتونم برنامه را گسترش بدم



با تشکر

mehdi.mousavi
دوشنبه 01 اسفند 1390, 13:35 عصر
سلام.
اگر فرض کنیم رشته مورد نظر رو بدین شکل داریم:

var str = '\/\/test my name\n\nvar name = "alismith";\n\n\/\/ set my id :\n\nvar id = 444+777;\n<p>ali</p>';

اونوقت کافیه برای قراردادن تگ span در دو طرف خطی که comment شده، بدین شکل عمل کنیم:

str = str.replace(/(^\/\/.*)$/gmi, '<span class="comment">$1</span>');

و به همین ترتیب، میتونیم عبارت var رو در تگ span ای با کلاس keyword قرار بدیم:

str = str.replace(/(^var )/gi, '<span class="keyword">$1</span>');

با این کار، خروجی بدین شکل خواهد بود:


<span class="comment">//test my name</span>

<span class="keyword">var </span>name = "alismith";

<span class="comment">// set my id :</span>

<span class="keyword">var </span>id = 444+777;
<p>ali</p>


برای هندل کردن تگ های HTML نیز می تونید از متود text در jQuery برای set کردن محتوای مورد نظر استفاده کنید تا HTML موجود در عبارت به درستی Encode بشه و فرضا جای < بزنه &gt;...

موفق باشید.

پاورقی: لطفا دقت کنید که Pattern های مورد استفاده مطلقا جامع و کامل نیست و فقط مثالی بود تا با روش کار آشنا بشید.