PDA

View Full Version : عبارات باقاعده



Mr.Brown
دوشنبه 05 خرداد 1393, 18:32 عصر
با سلام،
عبارت رشته ای داریم که باید دارای این ویژگی ها باشد:



کاراکترهای مجاز: حروف، اعداد و خط زیر
حداکثر طول مجاز رشته: 20 کاراکتر
اولین کاراکتر باید حرف باشد


من تازه شروع به یادگیری زبان PHP کردم. همین کار را با T-SQL رو بلدم. کدش شبیه این میشه.


NOT LIKE '%[^0-9a-z_]%'
AND LIKE '[a-z]%'
AND LEN(@string) < 21

اگر امکان داره دستور و یا تابع اینکار را بهم نشون بدیدن (با زبان PHP و هم با زبان SQL مای اسکیوال) یا حداقل بگید از چه دستوراتی باید استفاده کنم ممنون.

rezakho
دوشنبه 05 خرداد 1393, 18:53 عصر
توی mysql میخوای استفاده کنی یا php?

Mr.Brown
دوشنبه 05 خرداد 1393, 19:07 عصر
توی PHP
اگر با کد mysql اش هم آشنا هستید خوشحال میشم قرار بدین.

rezakho
سه شنبه 06 خرداد 1393, 00:22 صبح
<?php

$string = 'your string';

$pattern = '/[a-zA-Z_][a-zA-Z_0-9]{0,19}/';

$result = preg_match($pattern, $string);


کاراکتر اول حروف و آندراسکور میتونه باشه

در صورتی که رشته با الگو مطابق باشه، result مقدار 1 و اگر مطابق نباشه مقدار 0 رو بر میگردونه

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

Mr.Brown
سه شنبه 06 خرداد 1393, 01:02 صبح
لطف کردین اما مساله هنوز حل نشده.
رشته ی #a@ را بهش بدین بازم 1 رو برمیگردونه. در حالی که نباید کاراکتر اول چیزی جز حروف الفبا باشه و ضمنا نباید در محتوای رشته کاراکتری خارج از اعداد و حروف و underline چیز دیگه ای یافت بشه... .

rezakho
سه شنبه 06 خرداد 1393, 10:53 صبح
بله
شما درست میگید
ابتدا و انتهای رشته رو فراموش کردم
در ضمن آندراسکور رو هم از حرف اول برداشتم


<?php

$string = '#a@';

$pattern = '/^[a-zA-Z][a-zA-Z_0-9]{0,19}$/';

$result = preg_match($pattern, $string);

print_r($result);