Regular expression to remove HTML tags from a string:
(?i)<span[^>]*>
Help
a|b Matches a or b
gr(a|e)y Matches gray or grey
. Matches any single character
[abc] Matches a single character a, b or c
[^abc] Matches any single character except a, b or c
[a-z] Matches a single charactor in the range a to z
[a-zA-Z] Matches a single charactor in the range a to z or A to Z
^ Matches the start of the filename
$ Matches the end of the filename
( ) Defines a marked subexpression
\n Matches what the nth marked subexpression matched, where n is a digit from 1 to 9
\b Match word boundaries
* Matches the preceding element zero or more times
? Matches the preceding element zero or one times
+ Matches the preceding element one or more times
*? Lazily matches the preceding element zero or more times
+? Lazily matches the preceding element one or more times
{x} Matches the preceding element x times
{x,} Matches the preceding element x or more times
{x,y} Matches the preceding element between x and y times
\ Escape special character
Regex quick reference
[abc] A single character: a, b or c
[^abc] Any single character but a, b, or c
[a-z] Any single character in the range a-z
[a-zA-Z] Any single character in the range a-z or A-Z
^ Start of line
$ End of line
\A Start of string
\z End of string
. Any single character
\s Any whitespace character
\S Any non-whitespace character
\d Any digit
\D Any non-digit
\w Any word character (letter, number, underscore)
\W Any non-word character
\b Any word boundary character
(...) Capture everything enclosed
(a|b) a or b
a? Zero or one of a
a* Zero or more of a
a+ One or more of a
a{3} Exactly 3 of a
a{3,} 3 or more of a
a{3,6} Between 3 and 6 of a
options: i case insensitive m make dot match newlines x ignore whitespace in regex o perform #{...} substitutions only once
برای اینکه بین دو عبارت را انتخاب کنیم از عبارت زیر استفاده میکنیم
Start*.+"End
. در الگو به معنای این است که هر کاراکتری میتواند ظاهر شود(فقط یک کاراکتر).
* در الگو به این معناست که عبارت قبل از آن میتواند 0 بار یا بیشتر تکرار شود.
+ در الگو به این معناست که عبارت قبل از آن میتواند 1 بار یا بیشتر تکرار شود.
? در الگو به معنای این است که عبارت قبل از آن میتواند ظاهر نشود یا 1 بار ظاهر شود.
{num} عبارت قبل از این به تعداد num باید تکرار شود نه بیشتر و نه کمتر)num یک عدد صحیح است).
{m,n} عبارت قبل از این به تعداد حداقل m و حداکثر بار باید تکرار شود نه بیشتر و نه کمتر)n , m هردو اعداد صحیح هستند).
() هر عبارتی بین پرانتز قرار گیرد به عنوان یک واحد حساب میشود.
[] یک کلاس کاراکتر را مشخص میکند به این معنا که فقط یکی از کاراکترهای تعریف شده داخل آن میتوانند ظاهر شوند.
- در الگو برای مشخص کردن محدوده به کار میرود مثلا 9-0.
^ دو حالت میتواند داشته باشد 1.در ابتدای الگو به این معناست که عبارت مورد جستجو باید با عبارتی (کلمه،کاراکتر یا کلاس کاراکتر) که بعد از ^ میآید شروع شود.در داخل [] به این معناست که کاراکتر بعد از آن نباید ظاهر شود.
$ در پایان الگو به این معناست که عبارت مورد جستجو باید با عبارتی(کلمه،کاراکتر یا کلاس کاراکتر) که قبل از $ میآید شروع شود.
| یک عملگر است و به معنای یا میباشد.
. در الگو به معنای این است که هر کاراکتری میتواند ظاهر شود(فقط یک کاراکتر).
* در الگو به این معناست که عبارت قبل از آن میتواند 0 بار یا بیشتر تکرار شود.
+ در الگو به این معناست که عبارت قبل از آن میتواند 1 بار یا بیشتر تکرار شود.
? در الگو به معنای این است که عبارت قبل از آن میتواند ظاهر نشود یا 1 بار ظاهر شود.
{num} عبارت قبل از این به تعداد num باید تکرار شود نه بیشتر و نه کمتر)num یک عدد صحیح است).
{m,n} عبارت قبل از این به تعداد حداقل m و حداکثر بار باید تکرار شود نه بیشتر و نه کمتر)n , m هردو اعداد صحیح هستند).
() هر عبارتی بین پرانتز قرار گیرد به عنوان یک واحد حساب میشود.
[] یک کلاس کاراکتر را مشخص میکند به این معنا که فقط یکی از کاراکترهای تعریف شده داخل آن میتوانند ظاهر شوند.
- در الگو برای مشخص کردن محدوده به کار میرود مثلا 9-0.
^ دو حالت میتواند داشته باشد 1.در ابتدای الگو به این معناست که عبارت مورد جستجو باید با عبارتی (کلمه،کاراکتر یا کلاس کاراکتر) که بعد از ^ میآید شروع شود.در داخل [] به این معناست که کاراکتر بعد از آن نباید ظاهر شود.
$ در پایان الگو به این معناست که عبارت مورد جستجو باید با عبارتی(کلمه،کاراکتر یا کلاس کاراکتر) که قبل از $ میآید شروع شود.
| یک عملگر است و به معنای یا میباشد.
نتیجه
regex
پیدا کردن کلمه foo foo
شروع یک رشته با کلمه foo ^foo
پایان یافتن یک رشته با کلمه foo foo$
وقتی که خود کلمه foo در یک رشته باشد ^foo$
حرف c یا b یا a [abc]
تمام حروف از a تا z [a-z]
کارکترهایی که بزرگ نیستند [^A-Z]
پیدا کردن gif یا jpg (gif|jpg)
یک یا جند کلمه با حروف کوچک [a-z]+
اعداد، نقطه و یا علامت منفی [۰-۹\.\-]
هر کلمه که حداقل یک حرف، عدد یا آندرلاین داشته باشه ^[a-zA-Z0-9_]{1,}$
wy, wz, xy, یا xz ([wx])([yz])
هر کاراکتری به غیر از حروف و اعداد [^A-Za-z0-9]
سه حرف و چهار عدد ([A-Z]{3}|[0-9]{4})
این علامت [] هنگامی که در متن و context عبارات عادی {regular expression} به کار میرود، معنای خاصی دارد. از آنها برای پیدا کردن طیفی از کاراکترها استفاده میشود.
طیفهای بالا ذکر شده عمومی هستند، همچنین میتوانید از طیف ]3-0[ برای مطابقت با هر عدد دهدهی {decimal digits} از 0 تا 3 استفاده کنید، یا از طیف [b-v] برای حروف کوچک از b تا v.
برای نشان دادن تعداد دفعات تکرار یا موقعیت سری کاراکتر {character sequence}های داخل [] و تک کاراکترها باید از کاراکتر خاص استفاده کرد. هر یک از این کاراکترهای مخصوص معنای ضمنی {connotation} منحصر به فردی دارد. این علامتها +، *، ?، {int. range} و $ به دنبال رشته کاراکتر character sequence}} میآیند.
مثال زیر مفاهیم کاراکترهایی که با هم تطبیق دارند را برای شما روشن میسازد.
برای راحتی هر چه بیشتر شما در برنامه نویسی طیف کاراکتری از پیش تعریف شده متعددی، که با نام character class هم شناخته میشوند، موجود هست. کلاس کاراکترها یک طیف کامل از کاراکترها مثل الفبا یا دسته عدد صحیح {integer set} را تعریف میکند.
PHP در حال حاضر هفت عملکرد {function} برای جست و جو در string به کمک عبارات عادی POSIX-style فراهم میکند.
عبارات عادی سبک PERL شبیه همپای POSIX خود هستند. از POSIX syntax تقریباً میتوان به جای Perl-style regular expression functions {توابع عبارات عادی سبک PERL} استفاده کرد. در واقع، شما میتوانید تمام کمیت سنج {quantifier}های معرفی شده در بخش POSIX پیش را به کار ببرید.
هم اکنون توضیح متخصری دربارهی مفاهیم معمول در Perl regular expression میدهیم. سپس، شما را با عملکردهای {function} مرتبط با آن آشنا میسازیم.
متا کاراکتر اساساً یک کاراکتر الفبایی {alphabetical} است که به دنبال علامت ' /' میآید و به ترکیب معنای خاصی میدهد.
برای مثال، میتوانید با استفاده از متا کاراکتر '\d'، مبالغ زیاد پول را جستو و جو کنید : /([\d]+)000/.
اینجا \d هر رشتهای که از کاراکترهای عددی تشکیل شده است را جست و جو بررسی میکند.
زیر فهرستی از متا کاراکترهایی که در PERL Style Regular Expressions به کار میرود را مشاهده میکنید.
modifierهای متعددی وجود دارند که کار با regexps بسیار آسان میکنند، مثل حساسیت به کوچک و بزرگی {case sensitivity}، توانایی جستو و جو در چند خط همزمان و غیره.
PHP برای جستو و جوی رشتهها {string} به کمک عبارتهای عادی سازگار با Perl، عملکردهای زیر را ارائه میدهد.
آموزش Regular Expression در php
Regular Expression آموزش عبارت با قاعده
Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
Regex Tester and Debugger Online - Javascript, PCRE, PHP
Regular Expressions Reference: Quantifiers
Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
آموزش کامل Regular Expressions عبارات باقاعده
RegExr: Learn, Build, & Test RegEx
Regular Expressions in PHP - Tutorial Republic
MySQL REGEXP: Querying Data Using Regular Expressions
Regex Tutorial - Start and End of String or Line Anchors
// The Regular Expression filter $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; // The Text you want to filter for urls $text = "The text you want to filter goes here. http://google.com"; // Check if there is a url in the text if(preg_match($reg_exUrl, $text, $url)) { // make the urls hyper links echo preg_replace($reg_exUrl, "{$url[0]} ", $text); } else { // if no urls in the text just return the text echo $text; }
Selecting tags
<(?!a|br)[^>]*>
<(div|/div|br|p|/p)[^>]{0,}>
Check email:
preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)
Only numbers, letters and dot:
echo preg_match("/^[a-z0-9.]+$/i", $accountname);
if(preg_match('/[^0-9a-z\s-]/i',$string))
if(preg_match('/[^0-9A-Za-z\(\)\s-]/i',$string))
How do I remove blank lines from text in PHP
// New line is required to split non-blank lines
preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);
The above regular expression says:
/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/
1st Capturing group (^[\r\n]*|[\r\n]+)
1st Alternative: ^[\r\n]*
^ assert position at start of the string
[\r\n]* match a single character present in the list below
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)
2nd Alternative: [\r\n]+
[\r\n]+ match a single character present in the list below
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)
[\s\t]* match a single character present in the list below
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
\s match any white space character [\r\n\t\f ]
\tTab (ASCII 9)
[\r\n]+ match a single character present in the list below
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
\r matches a carriage return (ASCII 13)
\n matches a fine-feed (newline) character (ASCII 10)
RegExr: Learn, Build, & Test RegEx