-
دنیای رگولار اکسپرشن Regular expression
با سلام و خسته نباشید خدمت همگی دوستان
هدفم از ایجاد این تاپیک فقط و فقط کمک به دوستان عزیز در مورد این مبحثه .
هر کسی هر چی از کدهای Regular expression داره در اینجا قرار بده تا هم من و بقیه بچه ها از اون استفاده کنند و یک مرجع خوب بشه برای یادگیری و رفع اشکالات.
دوستان زیادی در انجمن هستند با این موضوع آشنایی دارند که شرکت در این تاپیک باعث دلگرمی ما خواهد شد.
====================
یک توضیحی برای کاربرانی که هنوز آشنایی با این موضوع ندارند:
عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد.
Regular Expressions دارای یک سری سینتکس های مربوط به خود است که به کمک آن می توان تنها با نوشتن یک خط کد، یک رشته ی بزرگ متنی را تحلیل و جستجو کرد در حالی که اگر از روشهای دیگری استفاده می کردیم به احتمال خیلی زیاد از یک خط تجاوز می کرد . و این سادگی و در عین حال کارایی بالای این روش را می رساند .
Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند . عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر (interpret) می شوند .
عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ادیتورها (Text Editor) برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد . همچنین در بعضی از زبانهای برنامه نویسی نیز از موتور Regular Expressions استفاده می شود (نظیر Perl,Ruby,TCL)
اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد .
جدول زیر نمونه ای از سینتکس های Regular Expressoins می باشد .
[]
range specificication (e.g., [a-z] means a letter in the range a to z)
\w
word character; same as [0-9A-Za-z_]
\W
non-word character
\s
space character; same as [ \t\n\r\f]
\S
non-space character
\d
digit character; same as [0-9]
\D
non-digit character
\b
backspace (0x08) (only if in a range specification)
\b
word boundary (if not in a range specification)
\B
non-word boundary
*
zero or more repetitions of the preceding
+
one or more repetitions of the preceding
{m,n}
at least m and at most n repetitions of the preceding
?
at most one repetition of the preceding; same as {0,1}
|
either preceding or next expression may match
()
grouping
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
اولین رو خودم استارت میزنم تا شروعی باشه برای دیگر کاربران :
=============================================
برای درستی آدرس ایمیل :
$Email =$_POST['Email'] ;
if(!preg_match('/^[a-z0-9_\-+\.]+@([a-z0-9\-+]+\.)+[a-z]{2,5}$/i', $Email))
{
die('erorr');
}
==================
درستی آدرس آی پی :
Standard IP-Address(IPv4) RegEX
$ip='192.168.1.2';
if(preg_match('((?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9]))', $ip))
{ echo'okey'; }else { echo'erorr'; }
بالایی برای ورژن 4 بود:
اینم برای درستی آی پیه:
(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
می دونید که یک رمز خوب باید شامل حروف و عدد و ... باشه
من در اینجا اومدم گفتم رمز : شامل هم عدد باشه و هم حروف که حتما باید 6 الی 15 کاراکتر باشه
$pass='ali!@12';
if(preg_match('/(?!^[0-9]*$)(?!^[a-zA-Z!@#$%^&*()_+=<;>;?]*$)^([a-zA-Z!@#$%^&*()_+=<;>;?0-9]{6,15})$/',$pass))
{ echo'okey'; }else { echo'error'; }
===============
در اینجا می گم پسورد ما بین 8 الی 20 کاراکتر از عدد و حروف باشه که در این پسورد نباید بیش از 3 کارکتر تکراری داشته باشیم
$password='Reza 12344 RRR';
if(preg_match('/^(?!.*(.)\1{3})((?=.*[^\w\d\s])(?=.*\w)|(?=.*[\d])(?=.*\w)).{8,20}$/', $password))
{ echo'okey'; }else { echo'error'; }
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
شماره تلفن (بیشتر از 10 عدد) :
$tel='0911-111-2345';
if(preg_match('/(\()*((\d){3})(\)*)[ -.]*((\d){3})[ -.]*((\d){4})[ a-zA-Z0-9,-.]{0,10}/', $tel))
{ echo'okey'; }else { echo'error'; }
===============================
پسورد باید بیش از 6 کاراکتر و حداقل یک حروف کوچک و یک حروف بزرگ و یک عدد باشد
$pw='AAaa99';
if(preg_match('/\A(?=[\x20-\x7E]*?[A-Z])(?=[\x20-\x7E]*?[a-z])(?=[\x20-\x7E]*?[0-9])[\x20-\x7E]{6,}\z/', $pw))
{ echo'okey'; }else { echo'error'; }
==============================
پسورد ما باید شامل حروف بزرگ و کوچک - اعداد - کاراکترها دستوری و بیش از 8 و کمتر از 20 کاراکتر باشد
$acc='AAaa987*.&^%$';
if(preg_match('/^(?!.*(.)\1{3})((?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[^\w\d\s])).{8,20}$/', $acc))
{ echo'okey'; }else { echo'error'; }
بچه ها بسم الله
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
سلام
دوست عزیز به خاطر تاپیک خوبت ممنون
شاید این به درد بخوره : http://regexlib.com
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
نقل قول:
نوشته شده توسط
desatir7316
در این مبحث که سایت زیاد وجود داره و منم چندتاش رو عرض کردم . حتی سایت های آنلاین... اما اینجا فقط یک کمک و مرجع برای دوستان هست . اگر کسی می تونه توی این تاپیک کمکمون کنه خوشحال میشیم.
با تشکر
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
نقل قول:
سلام
من می خواهم برای جلوگیری از استفاده از تگ HTML در فرم ها از دستورات زیر استفاده کنم
پاکسازی تگ ها :
$value=' <script> reza </script> <a href="http"//abc.com">test</a>';
echo preg_replace("/<.*?>/", "", $value);
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
خلاصه آدرس :
در اینجا یک آدرسی رو وارد می کنیم و میگیم مثلا 22 کارکتر اول رو بگیر و بقیه و نقطه چین ... بذار و در آخر آدرس اصلی رو لینکش میکنم
$text = 'http://mehr-design.ir/test/mr.ghorbani/f/How-Do-I-Make-Short-Urls-On.html';
echo preg_replace("/^(.{1,22})(.*|$)/s", "<a href=".$text.">$1</a>...", $text);
------------------------------------------------------
ورودی فقط عددی بیشتر از 6 رقم :
$Number='123456';
if(preg_match('/^[0-9]{6}/',$Number))
{ echo'okey'; }else { echo'erorr'; }
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
چک کردن درستی آدرس دامنه سایت :
اگر آدرس سایت به درستی وارد شده باشه خروجی ما میشه : 1 ، در غیر این صورت خروجی 0
$A='http://www.mehr-design.ir'; // درستی آدرس سایت رو چک می کنه | http://www.
echo preg_match("/(data|http|https|ftp):\/\/([a-zA-Z0-9_]+)\.([a-zA-Z0-9-_]+)/i",$A); /// output 1
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
من یدونه کاربردی شو توی تابع گذاشتم این تابع جمله های اول رو استخراج می کنه
function getFirst($text, $number=2) {
// use regex to split into sentences
$sentences = preg_split('/([.?!]["\']?\s)/', $text, $number+1, PREG_SPLIT_DELIM_CAPTURE);
if (count($sentences) > $number * 2) {
$remainder = array_pop($sentences);
} else {
$remainder = '';
}
$result = array();
$result[0] = implode('', $sentences);
$result[1] = $remainder;
return $result;
}
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
<?php
$chars = preg_split('/(<[^>]*[^\/]>)/i', $content, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($chars); //parentheses added
?>
Produces:
Array
(
[0] => <strong>
[1] => Lorem ipsum dolor
[2] => </strong>
[3] => sit <img src="test.png" />amet
[4] => <span class="test" style="color:red">
[5] => consec
[6] => <i>
[7] => tet
[8] => </i>
[9] => uer
[10] => </span>
[11] => .
)
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
واقعا تاپیک خوبیه .
فقط اگه وقت کنید نحوه نوشتن پترن هایی که قرار دادین رو توضیح بدید ممنون میشم.
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
سلام بنده میخواستم بدونم چه طوری میتونم پاراگراف های یک پست را که کمتر از 100 کاراکتر هست را رنگشون را تغییر بدهم
یه جوری که پاراگراف اول کمتر از 100 بلد
بقیش معمولی
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
نقل قول:
نوشته شده توسط
phpmob
سلام بنده میخواستم بدونم چه طوری میتونم پاراگراف های یک پست را که کمتر از 100 کاراکتر هست را رنگشون را تغییر بدهم
یه جوری که پاراگراف اول کمتر از 100 بلد
بقیش معمولی
با اجازه آقا رضا :
می تونی به صورت زیر استفاده کنی
/^[\s\S]{100,100}$/
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
سلام. اگه بخوایم مثلا فقط یک زبان خاص استفاده باشه کدش چی هست؟ مثلا فقط فارسی باشه! یا مثلا چینی باشه + انگلیسی + عدد. یا مثلا انگلیسی + آلمانی باشه.
-
پست بدون محتوا
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
نقل قول:
نوشته شده توسط
MostafaEs3
سلام. تشکر. هر دو سه تست شد دوتای دومی روی php 5.4 اجرا نشدند.
با تشکر.
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
چک کردن زبان فارسی :
preg_match("/[\x{0600}-\x{06FF}\x]{1,32}/u", 'محمد');
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
خروجی گرفتن فقط عدد در بین جمله :
$Search="این کالا به قیمت 20000 هزار است ";
$Is_Number= preg_replace('/[\x{0600}-\x{06FF}\x]{1,32}/u',"", $Search);//حذف حروف فارسی
$Is_Number=trim(preg_replace('/[a-zA-Z!@#$%^&*()_+=<;>;?]/',"", $Is_Number));// حذف گروه انگلیسی و کاراکترها
echo $Is_Number;
//out : 20000
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
خروجی گرفتن فقط عدد در بین جمله :
$Search="این کالا به قیمت 20000 هزار است ";
$Is_Number= preg_replace('/[\x{0600}-\x{06FF}\x]{1,32}/u',"", $Search);//حذف حروف فارسی
$Is_Number=trim(preg_replace('/[a-zA-Z!@#$%^&*()_+=<;>;?]/',"", $Is_Number));// حذف گروه انگلیسی و کاراکترها
echo $Is_Number;
//out : 20000
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
ساخت اتوماتیک رگولار اکسپرشن بدون یادگیری قواعد رگولار اکسپرشن. کافیه متن مورد نظر را وارد کنید و بگید کدام قسمتش مدنظرتونه. سپس زبان برنامه نویسی مدنظر خودتونو انتخاب می کنید کد براتون ساخته میشه
txt2re.com
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
سلام . سایت خوبی یه فقط من متوجه نشدم..!!
من اگز بخوام فرمت واعتبار سنجی ورود اطلاعاتم به صورت مثلا 48/30003/545445 و یا مثلا شماره شبای بانکی به صورت
IR55 4545 5645 6566 8887 2121 65 باشه و فرمت اون رو مثل کنترل وارد کردن یک ایمیل بهم بده چطوری باید عمل کنم ...؟
ممنون
-
نقل قول: دنیای رگولار اکسپرشن Regular expression
نقل قول:
نوشته شده توسط
myhoo2005
سلام . سایت خوبی یه فقط من متوجه نشدم..!!
من اگز بخوام فرمت واعتبار سنجی ورود اطلاعاتم به صورت مثلا 48/30003/545445 و یا مثلا شماره شبای بانکی به صورت
IR55 4545 5645 6566 8887 2121 65 باشه و فرمت اون رو مثل کنترل وارد کردن یک ایمیل بهم بده چطوری باید عمل کنم ...؟
ممنون
اصلا این حرکت ربطی به -Regular-expression نداره .
با کدهای php یا JS یا JQuery می تونی این عمل رو انجام بدید