Leonova — 100 Iranian & useful regex patterns فایل شامل ۱۰۰ ریجکس مفید برای کاربردهای ایرانی و عمومی. هر الگو به صورت PCRE-style (با ^ و $) نوشته شده.
توضیح: شماره موبایل ۱۱ رقمی که با09 شروع میشود. مثال:09123456789
/ ^ 0 ? 9 ( 0 [ 1 - 5 ] | 1 [ 0 - 9 ] | 2 [ 0 - 2 ] | 3 [ 0 - 9 ] | 4 [ 1 ] | 9 [ 0 1 2 3 4 8 9 ] ) [ 0 - 9 ] { 7 } $ / توضیح: شماره موبایل ۱۰ یا ۱۱ رقمی که با09 یا با9 شروع میشود و تمام پیش شماره های اپراتورها در ایران را ( تا به امروز ) پوشش میدهد.
2. شماره موبایل با جداکننده (مثل 09x-xxx-xxxx) / ^ 0 9 \d { 2 } [ - ] ? \d { 3 } [ - ] ? \d { 4 } $ / مثال:091-234-5678 یا09123456789
3. تلفن ثابت ایران (کد و شماره) مثال:021-12345678 یا041-1234567
مثال:1234567890 یا12345-67890
5. شناسه ملی (کد ملی) — فقط قالب (۱۰ رقم) و جلوگیری از تکرار تماماً یک رقم / ^ (? ! ( [ 0 - 9 ] ) \1{ 9 } ) \d { 10 } $ / توضیح: فقط فرمت؛ چکسام را بررسی نمیکند. مثال:0012345678
6. شماره شناسنامه (شماره سجلی) — ۱ تا ۱۰ رقم مثال:12345
7. کد اقتصادی (۳ رقمی؟ یا ۱۲ رقمی) — نمونهٔ ۱۲ رقمی مثال:123456789012
8. شناسه ملی شرکت (۱۱ رقم) مثال:12345678901
9. شناسه تامین اجتماعی (نمونه، ۱۰ تا ۱۲ رقم) 10. کد ملی با فرمت با فاصله (برای نمایش) / ^ \d { 3 } \s ? \d { 3 } \s ? \d { 4 } $ / مثال:123 456 7890
11. شماره پاسپورت (الفا-عددی ۵–۱۰ کاراکتر) مثال:A1234567
12. شماره کارت بانکی ۱۶ رقمی (قالب) مثال:6037123456789012
13. شماره کارت با جداکننده فضای خالی یا خط تیره / ^ (?: \d { 4 } [ - ] ? ) { 3 } \d { 4 } $ / مثال:6037 1234 5678 9012
15. کارتهای MasterCard (کلاسیک) 17. شماره شبا / IBAN ایران (IR + 24 رقم) یا با فاصلههای اختیاری:
18. مقدار پول (بدون واحد) با جداکننده هزارگان اختیاری و اعشار اختیاری / ^ (?: \d + | \d { 1 , 3 } (?: , \d { 3 } ) * ) (?: \. \d + ) ? $ / مثال:1,234,567.50 یا1234567
19. ریال/تومان با واحد (مثال ساده) / ^ (?: \d + | \d { 1 , 3 } (?: , \d { 3 } ) * ) (?: \. \d + ) ? \s ? (?: ر ی ا ل | ت و م ا ن | I R R ) ? $ / i u مثال:۱,۲۳۴ تومان (نکته: برای ارقام فارسی باید یونیکد فارسی را هم اضافه کنید — در آیتمهای بعدی هست)
20. حروف فارسی (حروف عربی-فارسی) و فاصلهها مثال:علی رضا
21. نام فارسی (۲ تا ۵۰ کاراکتر، شامل فاصله و نیمفاصله) / ^ [ \u0600 - \u06FF \u200C \s ] { 2 , 50 } $ / نکته:\u200C نیمفاصله (Zero-width non-joiner) را پوشش میدهد.
22. نام خانوادگی فارسی (با حروف و - و فاصله) / ^ [ \u0600 - \u06FF \u200C ] [ \u0600 - \u06FF \u200C \s \- ] { 1 , 49 } $ / 23. پذیرش ارقام فارسی (۰-۹) و انگلیسی (0-9) — عدد صحیح مثال:۱۲۳۴ یا1234
24. عدد اعشاری که هم میتواند با ارقام فارسی نوشته شود / ^ [ 0 - 9 \u06F0 - \u06F9 ] + (?: [ . , ] [ 0 - 9 \u06F0 - \u06F9 ] + ) ? $ / مثال:۱۲۳٫۴۵
/ ^ [ A - Z a - z 0 - 9 . _ % + - ] + @ [ A - Z a - z 0 - 9 . - ] + \. [ A - Z a - z ] { 2 , } $ / (قابل قبول برای اکثریت موارد)
/ ^ (?: [ A - Z a - z 0 - 9 ] (?: [ A - Z a - z 0 - 9 - ] { 0 , 61 } [ A - Z a - z 0 - 9 ] ) ? \. ) + [ A - Z a - z ] { 2 , } $ / 27. URL کامل (http/https اختیاری) / ^ ( h t t p s ? : \/ \/ ) ? [ ^ \s / $ . ? # ] .[ ^ \s ] * $ / i (الگوی ساده و عمومی برای URLها)
/ ^ ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 ? \d { 1 , 2 } ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 ? \d { 1 , 2 } ) ) { 3 } $ / / ^ ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 7 } [ 0 - 9 a - f ] { 1 , 4 } $ / i / ^ ( [ 0 - 9 A - F a - f ] { 2 } [: -] ) { 5 } ( [ 0 - 9 A - F a - f ] { 2 } ) $ / 31. کد QR-like کوتاه (Base64-url safe) — مثال عمومی 32. هگزادسیمال رنگ (مثل #RRGGBB) / ^ # ? ( [ A - F a - f 0 - 9 ] { 6 } | [ A - F a - f 0 - 9 ] { 3 } ) $ / 33. زمان 24 ساعته HH:MM(:SS) اختیاری / ^ ( [ 0 1 ] \d | 2 [ 0 - 3 ] ) : [ 0 - 5 ] \d ( : [ 0 - 5 ] \d ) ? $ / مثال:23:59 یا09:05:30
34. تاریخ میلادی YYYY-MM-DD (قالب پایهای) / ^ ( 1 9 | 2 0 ) \d \d - ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) - ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) $ / 35. تاریخ شمسی (قالب ساده YYYY/MM/DD برای بازهٔ معمول 1300-1499) / ^ ( 1 3 | 1 4 ) \d { 2 } \/ ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) \/ ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) $ / مثال:1402/07/15 (بهصحت روز/ماه دقیق بررسی نشد)
36. تاریخ شمسی با جداکننده - یا / / ^ ( 1 3 | 1 4 ) \d { 2 } [ - \/ ] ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) [ - \/ ] ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) $ / 37. تاریخ به صورت dd/mm/yyyy یا dd-mm-yyyy / ^ ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) [ - \/ ] ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) [ - \/ ] ( 1 9 | 2 0 ) \d { 2 } $ / 38. نام کاربری (لاتین، اعداد، نقطه، زیرخط، ۳–۳۰ کاراکتر) 39. نام کاربری فارسی (حروف فارسی، عدد، نقطه، زیرخط) / ^ [ \u0600 - \u06FF 0 - 9 . _ ] { 3 , 30 } $ / 40. پسورد قوی (حداقل ۸، شامل حرف بزرگ، حرف کوچک، عدد، نماد) / ^ (? = .* [ a - z ] ) (? = .* [ A - Z ] ) (? = .* \d ) (? = .* \W ) .{ 8 , } $ / / ^ [ 0 - 9 a - f ] { 8 } - [ 0 - 9 a - f ] { 4 } - 4 [ 0 - 9 a - f ] { 3 } - [ 8 9 a b ] [ 0 - 9 a - f ] { 3 } - [ 0 - 9 a - f ] { 12 } $ / i / ^ (?: [ A - Z a - z 0 - 9 + \/ ] { 4 } ) * (?: [ A - Z a - z 0 - 9 + \/ ] { 2 } = = | [ A - Z a - z 0 - 9 + \/ ] { 3 } = ) ? $ / 43. فقط اعداد و خط تیره و اسلش (مثل شماره مرجع) 44. شماره فاکتور (فقط رقم و - و /) 45. شناسه یکتا کوتاه (alnum و خط تیره) 46. اسامی ماههای شمسی (نامهای کامل فارسی) / ^ ( ف ر و ر د ی ن | ا ر د ی ب ه ش ت | خ ر د ا د | ت ی ر | م ر د ا د | ش ه ر ی و ر | م ه ر | آ ب ا ن | آ ذ ر | د ی | ب ه م ن | ا س ف ن د ) $ / u / ^ ( ش ن ب ه | ی ک ش ن ب ه | د و ش ن ب ه | س ه ش ن ب ه | چ ه ا ر ش ن ب ه | پ ن ج ش ن ب ه | ج م ع ه ) $ / u 48. شماره پلاک ماشین ایران (الگو عمومی) / ^ [ 0 - 9 ] { 2 , 3 } [ A - Z a - z \u0621 - \u06FF ] { 1 } [ 0 - 9 ] { 3 } [ 0 - 9 ] { 2 } $ / u توضیح: پلاکهای رسمی پیچیدهاند؛ این الگو نمونهٔ عمومی است.
49. پلاک موتورسیکلت (اعداد و حروف) / ^ [ \u06F0 - \u06F9 \d ] { 4 , 7 } [ A - Z a - z \u0621 - \u06FF ] ? $ / u 50. شماره پروانه کسب (اعداد و حروف، ۳–۲۰ کاراکتر) / ^ [ A - Z a - z \u0600 - \u06FF 0 - 9 \- \/ ] { 3 , 20 } $ / 51. نشانی کامل (خطی: حروف فارسی/انگلیسی و اعداد و علائم مرسوم) / ^ [ \u0600 - \u06FF A - Z a - z 0 - 9 \s \. , \- \/ # ( ) ] { 5 , 200 } $ / 52. رشتهٔ خالی یا فقط فاصله — برای جلوگیری (این برای تشخیص رشتهٔ خالی است)
53. کنترل وجود حداقل یک حرف فارسی در متن 54. کنترل وجود حداقل یک عدد (فارسی یا لاتین) 55. هشتگ فارسی/لاتین (توئیتر-استایل) / ^ # ( [ A - Z a - z 0 - 9 _ ] | [ \u0600 - \u06FF ] ) + $ / u مثال:#تست یا#leo_nova
57. رشتهی فقط حروف لاتین و فاصله (نام انگلیسی) 58. رشتهای بدون فاصلهٔ انتهایی/ابتدایی (برای trim-check) 59. شمارهٔ قرارداد (ترکیبی عدد-حروف) / ^ [ A - Z a - z 0 - 9 \- \/ ] { 4 , 50 } $ / 60. مسیری در سیستم (Path) ساده (بدون اسمی با پراپرتی خاص) / ^ ( \/ ? [ A - Z a - z 0 - 9 . _ \- + ] + ) + \/ ? $ / مثال:/home/user/docs
61. فرمت ایمیل فارسینشانهدار (پشتیبانی از کاراکترهای یونیکد در بخش محلی) / ^ [ A - Z a - z 0 - 9 \u0600 - \u06FF . _ % + - ] + @ [ A - Z a - z 0 - 9 . - ] + \. [ A - Z a - z ] { 2 , } $ / u 62. رشتهٔ بدون کاراکترهای کنترل (مثل \x00-\x1F) 63. شناسهٔ پیامک (شمارهٔ کوتاه یا متن کوتاه) 64. شناسهٔ تراکنش بانکی (alnum، معمولا ۶–۳۶ کاراکتر) 65. GUID بدون خط تیره (۳۲ هگز) 66. رشتهٔ تنها با پرانتز متعادل (ساده — بررسی سطحی) / ^ [ ^ ( ) ] * $ | ^ [ ^ ( ) ] * \( [ ^ ( ) ] * \) [ ^ ( ) ] * $ / (الگوی ساده، برای بررسی وجود یا عدموجود پرانتز یا یک جفت)
67. شمارهٔ سطری (line number) — فقط عدد مثبت 68. شمارهٔ منفی یا مثبت صحیح 69. فرمت JSON ساده (خط اول بررسی) / ^ \s * ( \{ | \[ ) .* ( \} | \] ) \s * $ / s (فقط بررسی کلی؛ پارس کامل را انجام نمیدهد)
70. رشتهٔ حاوی تنها حروف و ارقام فارسی و لاتین (بدون اسپِشال) 71. کد پست الکترونیک ایرانی با دامنهٔ ir (ایرادگیری ساده) / ^ [ A - Z a - z 0 - 9 . _ % + - ] + @ [ A - Z a - z 0 - 9 . - ] + \. i r $ / i 72. شناسهٔ کارمندی (مثال: حروف-اعداد، ۳–۲۰) 73. شمارهٔ بیمه (نمونه قالب: ۱۰ رقم) 74. URL با پروتکل (http/https) و بررسی دامنه / ^ ( h t t p s ? : \/ \/ ) ( [ A - Z a - z 0 - 9 - ] + \. ) + [ A - Z a - z ] { 2 , } ( \/ \S * ) ? $ / 75. عبارت Regex برای حذف تگ HTML (برای تشخیص/پریچارک) 76. بررسی وجود تگ<script> (امنیت) / < s c r i p t \b [ ^ < ] * (?: (? ! < \/ s c r i p t > ) < [ ^ < ] * ) * < \/ s c r i p t > / i 77. مقدار درصد (0 تا 100) با یا بدون اعشار / ^ ( 1 0 0 | [ 0 - 9 ] { 1 , 2 } ) ( \. \d + ) ? % ? $ / 78. شمارهٔ بیمهشده/کارت سلامت (الگوی عمومی) 79. رمز یکبارمصرف عددی (OTP) ۴–۸ رقمی 80. رشتهٔ base-36 (a-z0-9) 81. رشتهٔ فقط حروف یونیکد (هر زبان) — حداقل ۱ حرف 82. رشتهٔ شامل حداقل یک حرف لاتین و حداقل یک حرف فارسی / (? = .* [ A - Z a - z ] ) (? = .* [ \u0600 - \u06FF ] ) .+ / 83. شمارهٔ قبض (عددی یا شامل -، /) — عمومی 84. فرمت CSV ساده (خط بهصورت کاما جدا) (برای یک خط)
85. شناسهٔ تویتر/اینسگرام (شروع با @ یا بدون) / ^ @ ? [ A - Z a - z 0 - 9 . _ ] { 1 , 30 } $ / 86. مسیر فایل ویندوز (مثل C:\folder\file.ext) / ^ [ A - Z a - z ] : \\ (?: [ ^ \\ \/ : * ? " < > | \r \n ] + \\ ) * [ ^ \\ \/ : * ? " < > | \r \n ] * $ / 87. نام فایل امن (بدون کاراکترهای نامجاز) / ^ [ ^ \\ \/ : * ? " < > | \r \n ] { 1 , 255 } $ / 88. رشتهٔ فقط اعداد رومی (I V X L C D M) 89. چک کردن تگ HTML باز بسته برابر (ساده، فقط برای نمونه) / ^ < ( [ A - Z a - z ] + ) [ ^ > ] * > .* < \/ \1> $ / s 90. UUID-like کوتاه (8-4-4) / ^ [ 0 - 9 a - f ] { 8 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 4 } $ / i 91. رشتهٔ حاوی ایموجی (بررسی وجود) / [ \p{ Emoji_Presentation} \p{ Extended_Pictographic} ] / u (پشتیبانی بسته به engine ممکن است متفاوت باشد)
92. شمارهٔ حساب بانکی محلی (مثال: ۱۰–۲۰ رقم) 93. مقدار درصد پیشرفت (۰ تا ۱۰۰ با اعشار یک یا دو رقمی) / ^ ( 1 0 0 (?: \. 0 { 1 , 2 } ) ? | [ 0 - 9 ] { 1 , 2 } (?: \. \d { 1 , 2 } ) ? ) $ / 94. شمارهٔ سریال کالا (alnum و -، طول ۵–۴۰) 95. الگوی CSV برای ایمیلها (لیست ایمیل جداشده با ؛ یا ,) / ^ [ ^ , ; @ \s ] + @ [ ^ , ; @ \s ] + \. [ ^ , ; @ \s ] + (?: [ ; , ] \s * [ ^ , ; @ \s ] + @ [ ^ , ; @ \s ] + \. [ ^ , ; @ \s ] + ) * $ / 96. شمارهٔ نمره (۰.۰ تا ۲۰.۰ یا ۰–۱۰۰) — عمومی / ^ (?: [ 0 - 9 ] | 1 [ 0 - 9 ] | 2 0 ) (?: \. \d + ) ? $ | ^ (?: [ 0 - 9 ] { 1 , 3 } ) (?: \. \d + ) ? $ / 97. رشتهٔ تنها شامل پرانتز کروشه آکولاد (برای بررسی کاراکترها) 98. الگوی slug (برای URL friendly) / ^ [ a - z 0 - 9 ] + (?: - [ a - z 0 - 9 ] + ) * $ / 99. متن چندخطی بدون تگ HTML (بررسی سطحی) 100. الگوی ترکیبی قوی برای فرمهای ایرانی — شماره موبایل یا تلفن ثابت یا ایمیل یا کدملی / ^ (?: 0 9 \d { 9 } | 0 \d { 2 , 3 } [ - ] ? \d { 7 , 8 } | [ A - Z a - z 0 - 9 . _ % + - ] + @ [ A - Z a - z 0 - 9 . - ] + \. [ A - Z a - z ] { 2 , } | (? ! ( [ 0 - 9 ] ) \1{ 9 } ) \d { 10 } ) $ / توضیح: اگر بخواهید یک فیلد ورودی قبول کنه هر کدوم از این چهار نوع (موبایل یا ثابت یا ایمیل یا کدملی).
بعضی چیزها (مثلکد ملی یاشماره کارت یاIBAN ) نیاز به بررسی الگوریتمی (checksum / Luhn) دارند که با یک ریجکس کامل قابل تأیید نیست؛ اینجا فقط قالبها و چکهای سطحی آورده شده. برای پشتیبانی ازاعداد فارسی (۰۱۲۳...) از رنج یونیکد\u06F0-\u06F9 استفاده کنید یا قبل از اعتبارسنجی ارقام فارسی رو به لاتین تبدیل کنید. برای ریجکسهایی کهu یاi دارند، اگر موتور ریجکس شما این flagها را ندارد، ممکنه نیاز به تنظیمات محلی باشه.