Ti li畛u t狸m hi畛u jQuery dnh cho ng動畛i m畛i b畉t 畉uLel 畉ng Vn
油
Ti li畛u ny h動畛ng d畉n nh畛ng b畉n m畛i b畉t 畉u h畛c lm vi畛c v畛i jQuery trong vi畛c vi畉t Client Script khi thi畉t k畉 website. Nh畛ng m担 t畉 v h動畛ng d畉n trong ti li畛u ny l h畉t s畛c cn b畉n v ch動a c坦 h動畛ng d畉n n但ng cao no.
Ti li畛u t狸m hi畛u jQuery dnh cho ng動畛i m畛i b畉t 畉uLel 畉ng Vn
油
Ti li畛u ny h動畛ng d畉n nh畛ng b畉n m畛i b畉t 畉u h畛c lm vi畛c v畛i jQuery trong vi畛c vi畉t Client Script khi thi畉t k畉 website. Nh畛ng m担 t畉 v h動畛ng d畉n trong ti li畛u ny l h畉t s畛c cn b畉n v ch動a c坦 h動畛ng d畉n n但ng cao no.
6. G畛i mail v畛i PHP
31 May
M畛t function c董 b畉n m c叩c website th動畛ng d湛ng l c坦 m畛t form li棚n h畛 畛 ng動畛i vi畉ng thm c坦
th畛 g畛i mail tr畛c ti畉p 畉n ng動畛i qu畉n tr畛 website. V畉y c叩c coder x畛 l箪 v畉n 畛 ny ra sao khi x但y
d畛ng website. Bi vi畉t ny s畉 gi畉i th鱈ch v畛 c董 ch畉 lm vi畛c c畛a mail v 畛ng d畛ng g畛i mail trong
PHP.
C董 ch畉 lm vi畛c c畛a email
B畉n ch畉t c畛a email l hai d畛ch v畛 畛c l畉p m畛t g畛i, m畛t nh畉n v th動畛ng 動畛c ci 畉t tr棚n c湛ng
m畛t server. C坦 nhi畛u giao th畛c kh叩c nhau cho vi畛c g畛i, nh畉n mail nh動ng th担ng d畛ng nh畉t l
POP3 cho vi畛c nh畉n mail v SMTP cho vi畛c g畛i mail. M畛t SMTP server khi g畛i mail i th担ng
th動畛ng kh担ng c畉n c坦 account. B畉t c畛 khi no n坦 nh畉n 動畛c y棚u c畉u t畛 m畛t client no 坦 tu但n th畛
theo 炭ng c畉u tr炭c c畛a n坦, th動畛ng l mail header, mail subject, v mail content v receipient (畛a
ch畛 email c畛a ng動畛i nh畉n) l n坦 s畉 l畉p t畛c t狸m c叩ch k畉t n畛i v畛i POP server 畛 g畛i c叩i mail 坦 i.
C嘆n m畛t POP server th狸 kh叩c, n坦 qu畉n l箪 c畉 m畛t database c叩c 畛a ch畛 email v m畉t kh畉u do
ng動畛i qu畉n tr畛 kh畛i t畉o ra v c畉p ph叩t cho ng動畛i d湛ng. Khi nh畉n 動畛c m畛t email n坦 s畉 cn c畛
theo 畛a ch畛 ng動畛i nh畉n 畛 chuy畛n 畉n 炭ng h嘆m th動 c畛a ng動畛i 坦.
M畛t i畛m l箪 th炭 l a ph畉n c叩c hosting hi畛n nay 畛u c坦 k竪m theo c叩c d畛ch v畛 mail POP v
SMTP, ch畉ng h畉n nh動 Cpanel v Direct admin d湛ng d畛ch v畛 mail Dovecot. Do 坦 khi b畉n mua
hosting b畉n c坦 quy畛n t畉o ra c叩c email g畉n lu担n v畛i t棚n mi畛n c畛a b畉n ch畉ng h畉n nh動
abc@congty.com. Nh畛 d畛ch v畛 mi畛n ph鱈 ny n棚n b畉n hon ton c坦 th畛 d湛ng hm mail() c畛a PHP
tr棚n c叩c hosting ny 畛 t畉o ra c叩c form li棚n h畛 cho ph辿p kh叩ch hng vi畉ng thm website c畛a b畉n
c坦 th畛 g畛i mail tr畛c ti畉p i t畛 website.
S畛 d畛ng hm mail() c畛a PHP.
Tr動畛c h畉t ch炭ng ta vi畉t o畉n code sau 但y 畛 t畉o m畛t form li棚n h畛 v g畛i 畉n hm mail() 畛 g畛i
mail i sau khi nh畉n SEND
7. Sau khi c坦 o畉n code ny n畉u b畉n upload l棚n m畛t hosting th狸 n坦 s畉 ch畉y ngay l畉p t畛c. V狸 nh動 達
n坦i 畛 tr棚n, h畉u h畉t c叩c hosting hi畛n nay 畛u h畛 tr畛 d畛ch v畛 POP/SMTP. L動u 箪, trong code d嘆ng
12 t担i 畛 畛a ch畛 nh畉n email l info@thuonghieuweb.com, c叩c b畉n c畉n thay b畉ng 畛a ch畛 email
c畛a m狸nh 畛 c坦 th畛 test vi畛c nh畉n mail ny.
8. Tuy nhi棚n v畛i nh畛ng b畉n kh担ng c坦 hosting ho畉c l ang ph叩t tri畛n tr棚n m担i tr動畛ng local, s畛
d畛ng xamp ho畉c wamp lm server th狸 o畉n code ny ch畉y s畉 b叩o l畛i. L箪 do l tr棚n xamp v
wamp kh担ng c坦 k竪m theo d畛ch v畛 mail. 畛 v動畛t qua c叩c l畛i ny v test ch炭ng ta lm nh動 sau:
B動畛c m畛t: t狸m m畛t website no 坦 m server 畛 坦 ch畉p nh畉n vi畛c g畛i mail b畉ng giao th畛c SMTP
m kh担ng c畉n x叩c th畛c. T担i 達 t狸m 動畛c m畛t c叩i, 坦 l http://www.vnpec.com.vn c叩c b畉n c坦 th畛
d湛ng t畉m 畛 test.
B動畛c hai: ch畛nh s畛a file php.ini trong wamp ho畉c xamp v畛i 3 d嘆ng sau:
[mail function]
SMTP = http://www.vnpec.com.vn
smtp_port = 25
sendmail_from = contact@vnpec.com.vn
B動畛c 3: Ch畉y test l畉i o畉n code tr棚n 畛 local.
Khai b叩o header
Trong khi ch畉y o畉n code tr棚n, c叩c b畉n s畉 th畉y c坦 m畛t phi畛n to叩i nh畛 坦 l email m b畉n d湛ng
畛 g畛i nh畛 th動 s畉 xu畉t hi畛n trong tr動畛ng from. Nh動 v畉y s畉 kh担ng chuy棚n nghi畛p l畉m. C嘆n n畉u
b畉n ch畉y tr棚n hosting th狸 h嘆m mail ny s畉 c坦 t棚n l root@localhost hay b畉t c畛 m畛t c叩i email
default no 坦 c畛a SMTP t畉o ra. i畛u ny khi畉n b畉n kh担ng reply cho ng動畛i i畛n form 動畛c. 畛
kh畉c ph畛c v畉n 畛 ny ch炭ng ta d湛ng th棚m tham s畛 header cho hm mail(). H達y ch竪n o畉n m達
sau 但y vo trong code, thay th畉 cho d嘆ng s畛 13
$headers = MIME-Version: 1.0 . rn;
$headers .= Content-type: text/html; charset=utf-8 . rn;
$headers .= From: .$name. <.$from.> . rn;
if(mail($to, $subject, $content, $headers))
R畛i ch畉y th畛 b畉n s畉 th畉y k畉t qu畉!
K畉t lu畉n:
- Vi畛c s畛 d畛ng mail() c畛a PHP 畛 g畛i mail c坦 th畛 t畉o 動畛c c叩c form li棚n h畛 r畉t chuy棚n nghi畛p
- Tuy nhi棚n n坦 c坦 r畉c r畛i khi test th畛 v畛i m担i tr動畛ng ph叩t tri畛n l PC
- C坦 m畛t ch炭t r畉c r畛i v畛i tr動畛ng from v 動畛c kh畉c ph畛c b畉ng c叩ch thay th畉 header c畛a mail
- Kh担ng d湛ng 動畛c v畛i c叩c SMTP server 嘆i h畛i ph畉i x叩c th畛c user tr動畛c khi g畛i mail
B棚n c畉nh hm mail() ch炭ng ta c嘆n m畛t c担ng c畛 kh叩c c畛c m畉nh l class phpmailer. PHPmailer s畉
gi炭p gi畉i quy畉t t畉t c畉 c叩c r畉c r畛i tr棚n trong code m kh担ng th竪m 畛ng 畉n PHP ini file. T担i s畉 畛
c畉p 畉n vi畛c s畛 d畛ng c担ng c畛 ny trong m畛t bi vi畉t kh叩c
H畉n g畉p l畉i
TH
9. B畉n mu畛n t畉o n炭t Like v Dislike gi畛ng nh動 youtube m kh担ng c畉n ph畉i load l畉i tr狸nh duy畛t. Bi
vi畉t sau s畉 gi炭p b畉n lm 動畛c i畛u 坦 h畉t s畛c 董n gi畉n s畛 d畛ng jQuery v Ajax.
I. Database
畉u ti棚n t畉o m畛t c叩i db 達. Db ny d湛ng 畛 l動u Id, n畛i dung tin, v up like, down dislike.V畛i
m畛i m畛t l畉n click t動董ng 畛ng th狸 gi叩 tr畛 s畉 c畛ng th棚m 1
HTML:
CREATE TABLE messages(
id INT PRIMARY KEY AUTO_INCREMENT,
message TEXT,
up INT,
down INT);
II.Index.php
File ny bao g畛m m達 PHP, Jquery, HTML.$(.like).click(function(){} l hm x畛 l箪 s畛 ki畛n
click n炭t c坦 class l like. 畛 但y ch炭ng ta cho 2 n炭t up v down 畛u c坦 class l like. Sau 坦 ch炭ng
ta l畉y ra gi叩 tr畛 id v name c畛a n坦 b畉ng $(this).attr(id);. Sau khi l畉y 動畛c thnh c担ng th狸 truy畛n
d畛 li畛u qua file rating.php s畛 d畛ng ajax. N畉u ang trong ti畉n tr狸nh x畛 l箪 th狸 #flash s畉 動畛c hi畛n
ra.Thnh c担ng s畉 cho hi畛n ra #content
HTML:
<script type="text/javascript" src=/slideshow/kiem-tra-javascript/33963356/"http:/ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".like").click(function()
{
var id=$(this).attr("id");
var name=$(this).attr("name");
var dataString = 'id='+ id + '&name='+ name;
$("#votebox").slideDown("slow");
$("#flash").fadeIn("slow");
$.ajax
({
type: "POST",
url: "rating.php",
data: dataString,
cache: false,
success: function(html)
{
10. $("#flash").fadeOut("slow");
$("#content").html(html);
}
});
});
// Close button action
$(".close").click(function()
{
$("#votebox").slideUp("slow");
});
});
</script>
//HTML Code
<a href="#" class="like" id="1" name="up">Like</a>
--
<a href="#" class="like" id="1" name="down">Dislike</a>
<div id="votebox">
<span id='close'><a href="#" class="close">X</a></span>
<div id="flash">Loading........</div>
<div id="content">
</div>
</div>
III. Rating.php
Trong file ny ch炭ng ta s畉 b畉t request c畛a user, v ki畛m tra xem 坦 l like hay dislike 畛 th畛c
hi畛n update vo csdl. Sau 坦 th畛c hi畛n t鱈nh t畛ng s畛 like v dislike, th畛c hi畛n l畉y % 畛 hi畛n th畛 ra
v畉ch mu t動董ng 畛ng. Vi畛c d湛ng % 畛 畉m b畉o khi d畛 li畛u ngy cng tng th狸 2 v畉ch mu s畉
kh担ng th畛 k辿o di m達i 動畛c.
PHP:
<?php
include("db.php");
if($_POST['id'])
{
$id=mysql_escape_String($_POST['id']);
$name=mysql_escape_String($_POST['name']);
// Vote update
mysql_query("update messages set $name=$name+1 where id='$id'");
// Getting latest vote results
$result=mysql_query("select up,down from messages where id='$id'");
$row=mysql_fetch_array($result);
$up_value=$row['up'];
$down_value=$row['down'];
$total=$up_value+$down_value; // Total votes
$up_per=($up_value*100)/$total; // Up percentage
$down_per=($down_value*100)/$total; // Down percentage
//HTML output
echo '<b>Ratings for this blog</b> ( '.$total.' total)
Like :'.$up_value.'
<div id="greebar" style="width:'.$up_per.'%"></div>
Dislike:'.$down_value.'
<div id="redbar" style="width:'.$down_per.'%"></div>';
}
?>
12. X畛 l箪 chu畛i b畉ng Javascript Regular Expression
Published July 22, 2013 in H畛c Css - Javascript
X畛 l箪 chu畛i b畉ng Javascript Regular Expression
H動畛ng d畉n s畛d畛ng X畛l箪 chu畛i b畉ng javascript Regular Expression ki畛m tra email, ki畛m tra chu畛i, ki畛m
tra k箪 t畛
Ph畉n 1: L箪 thuy畉t
1. RegEx l g狸?
RegEx (Regular Expression) l m畛t bi畛u th畛c th動畛ng 動畛c d湛ng 畛 m担 t畉 m畛t m畉u chu畛i (string
pattern).
2. V畉y, m畉u chu畛i l g狸?
M畉u chu畛i, di畛n gi畉i th担 ra c坦 ngh挑a l c叩c chu畛i vn b畉n tu但n th畛 theo m畛t quy lu畉t s畉p x畉p
(m畉u) no 坦.
V鱈 d畛:
- M畛t s畛 動畛c vi畉t d動畛i d畉ng m畛t chu畛i v畛i c叩c ch畛 s畛, c坦 th畛 c坦 ch畛a t畛i a 1 d畉u ph畉y 畛 gi畛a.
- D畛 li畛u ki畛u ngy th叩ng: Th動畛ng 動畛c vi畉t theu m畉u: dd/mm/yyyy: Hai ch畛 s畛 畉u ti棚n x叩c
畛nh ngy, ti畉p theo l d畉u g畉ch ch辿o, ti畉p 畉n l 2 ch畛 s畛 x叩c 畛nh th叩ng, ti畉p theo l d畉u g畉ch
ch辿o v k畉t th炭c b畛i b畛n ch畛 s畛 x叩c 畛nh nm.
- 畛a ch畛 email: xxx@yyy.zz.g狸坦: Bao g畛m 1 chu畛i vn b畉n 動畛c chia thnh 2 ph畉n: Ph畉n user
name v ph畉n domain, 2 ph畉n ny c叩ch nhau b畛i d畉u @. Ph畉n domain c坦 lu畉t ri棚ng theo c叩ch 畉t
t棚n c畛a domain
3. Kh叩i ni畛m v畛 bi畛u th畛c:
M畛t bi畛u th畛c bao g畛m c叩c to叩n t畛 v c叩c to叩n h畉ng
To叩n t畛: C叩c ph辿p to叩n (VD: c畛ng, tr畛, nh但n, chia, l畉p, g畛p, so s叩nh)
To叩n h畉ng: Bi畉n, gi叩 tr畛 動畛c d湛ng 畛 t鱈nh to叩n.
4. V畉y regex 動畛c d湛ng 畛 lm g狸 v n坦 c坦 t叩c d畛ng g狸?
Trong c叩c k畛 thu畉t x畛 l箪 chu畛i (VD: T狸m ki畉m, thay th畉垂) th担ng th動畛ng, ch炭ng ta c畉n ph畉i x叩c
畛nh c叩c chu畛i t動畛ng minh 畛 t狸m ki畉m. C叩c chu畛i ny 動畛c g畛i l t畛 kho叩.
Tuy nhi棚n, trong m畛t s畛 tr動畛ng h畛p ngo畉i l畛 kh叩c, ch炭ng ta kh担ng th畛 ch畛 畛nh r探 chu畛i t畛 kho叩
坦, m ch畛 c坦 th畛 m担 t畉 動畛c quy lu畉t 畛 sinh ra chu畛i t畛 kho叩 坦.
13. VD: Lm th畉 no 畛 l畉y 動畛c ton b畛 畛a ch畛 email trong m畛t vn b畉n?
R探 rng v畛i c但u h畛i ny, b畉ng m畉t th畛ong th狸 ta c坦 th畛 l畉y 動畛c, c嘆n b畉ng con 動畛ng l畉p tr狸nh
th担ng th動畛ng theo ki畛u t狸m ki畉m b畉ng t畛 kho叩 l c叩c 畛a ch畛 email th狸 ch炭ng ta b坦 tay.
Nh動ng n畉u c坦 regex, ch炭ng ta c坦 th畛 thi畉t l畉p ra quy lu畉t c畛a m畛t 畛a ch畛 email v y棚u c畉u
ch動董ng trinh t狸m ki畉m theo lu畉t 坦.
C炭 ph叩p khai b叩o regex trong JavaScript
Ch炭ng ta c坦 th畛 khai b叩o bi畉n ch畛a regex nh動 sau:
M達:
var t棚n_bi畉n= /m畉u_chu畛i/c叩ch_t狸m;
Tham s畛 c叩ch_t狸m x叩c 畛nh c叩ch th畛c t狸m ki畉m m畉u chu畛i, n坦 c坦 th畛 ch畛a c叩c gi叩 tr畛 sau 但y:
g: ("global" matching): L畉p l畉i qu叩 tr狸nh t狸m ki畉m cho 畉n khi k畉t th炭c chu畛i. Khi s畛 d畛ng
ph動董ng th畛c replace(), gi叩 tr畛 ny s畉 thay th畉 t畉t c畉 c叩c c畛m t畛 t狸m th畉y thay v狸 ch畛 c畛m t畛 畉u
ti棚n.
i: so s叩nh kh担ng ph但n bi畛t hoa th動畛ng.
m: so s叩nh 畛 ch畉 畛 a d嘆ng.
C坦 th畛 ph畛i h畛p nhi畛u c叩ch_t狸m. VD: gi. C滴ng c坦 th畛 kh担ng c畉n 動a tham s畛 ny vo
C叩c ph動董ng th畛c c坦 h畛 tr畛 regEx trong JavaScript:
Gi畉 s畛 c坦 m畛t bi畉n chu畛i S:
S.search(): T狸m chu畛i ph湛 h畛p v畛i bi畛u th畛c 達 cho v tr畉 v畛 v畛 tr鱈 c畛a chu畛i 坦
S.match(): T狸m chu畛i theo m畉u v tr畉 v畛 m畛t m畉ng c叩c gi叩 tr畛 t狸m th畉y
S.replace() Thay th畉 chu畛i b畉ng chu畛i kh叩c ph湛 h畛p v畛i m畉u t狸m ki畉m.
C叩c b畉n c坦 th畛 t狸m hi畛u c叩ch s畛 d畛ng c叩c hm ny tr棚n m畉ng, 畛 但y t担i ch畛 s畛 d畛ng hm match
畛 demo c叩ch s畛 d畛ng regex. N棚n nh畛, hm match() ny tr畉 v畛 m畛t m畉ng c叩c gi叩 tr畛 ph湛 h畛p v畛i
m畉u chu畛i c畉n t狸m.
V鱈 d畛 董n gi畉n 畉u ti棚n v畛 regex:
o畉n m達 d動畛i 但y tr畉 v畛 m畉ng c叩c chu畛i c坦 ch畛a ch畛 thu:
M達:
<html>
<body>
<script type="text/javascript">
var str = "Ngoai hien giot mua thu thanh thot roi";
var patt1 = /thu/; // M畉u chu畛i x叩c 畛nh m畛t ch畛 thu
14. var result = str.match(patt1);
document.write(result); // In ra ch畛 thu
</script>
</body>
</html>
o畉n v鱈 d畛 th畛 2 ch畛 t狸m ki畉m c叩c m畉u chu畛i ch畛a duy nh畉t ch畛 t:
HTML Code:
<html>
<head>
<script>
var s="Thu mot ti, thu hai Ti";
//regex: t/g x叩c 畛nh vi畛c t狸m ki畉m t畉t c畉 c叩c chu畛i l ch畛 t,
//v ti畉n hnh t狸m t畛 畉u 畉n cu畛i chu畛i nh畛 tham s畛 c叩ch t狸m /g.
document.write(s.match(/t/g)); //K畉t qu畉: t,t,t
//regex: t/gi x叩c 畛nh vi畛c t狸m ki畉m t畉t c畉 c叩c chu畛i l ch畛 t,
//v ti畉n hnh t狸m t畛 畉u 畉n cu畛i chu畛i kh担ng ph但n bi畛t ch畛 hoa, ch畛 th動畛ng
nh畛 tham s畛 c叩ch t狸m /gi.
document.write(s.match(/t/gi)); //K畉t qu畉: T,t,t,t,T
</script>
</head>
</html>
C叩c ph辿p to叩n t狸m ki畉m theo v畛 tr鱈
^: Tr畉 v畛 chu畛i k畉t qu畉 trong tr動畛ng h畛p chu畛i ny n畉m 畛 v畛 tr鱈 畉u c畛a chu畛i g畛c
$: Tr畉 v畛 chu畛i k畉t qu畉 trong tr動畛ng h畛p chu畛i ny n畉m 畛 v畛 tr鱈 cu畛i c畛a chu畛i g畛c
b: Tr畉 v畛 chu畛i k畉t qu畉 trong tr動畛ng h畛p chu畛i ny n畉m 畛 v畛 tr鱈 畉u c畛a m畛t t畛 trong chu畛i
g畛c. N畉u c畉n so s叩nh 畛 v畛 tr鱈 cu畛i t畛, h達y 畉t bi畛u th畛c b 畛 v畛 tr鱈 cu畛i t畛.
B: Tr畉 v畛 chu畛i k畉t qu畉 trong tr動畛ng h畛p chu畛i ny kh担ng n畉m 畛 v畛 tr鱈 畉u c畛a m畛t t畛 trong
chu畛i g畛c. (tu畛 thu畛c vo v畛 tr鱈 畉t B 畛 畉u ho畉c cu畛i m畛t t畛)
?=: Tr畉 v畛 chu畛i k畉t qu畉 n畉u theo sau chu畛i 坦 l m畛t chu畛i no 坦 動畛c ch畛 畛nh tr動畛c
?!: Tr畉 v畛 chu畛i k畉t qu畉 n畉u sau chu畛i 坦 kh担ng ph畉i l m畛t chu畛i no 坦 動畛c ch畛 畛nh tr動畛c
V鱈 d畛:
HTML Code:
<html>
<head>
<script>
var s="Thu mot ti, thu hai Ti";
document.write(s.match(/^Thu/i)); //K畉t qu畉: Thu, v狸 ch畛 Thu n畉m 畛 畉u
chu畛i s
15. document.write(s.match(/t$/gi)); //K畉t qu畉: null, v狸 ko t狸m th畉y ch畛 t
n畉m 畛 cu畛i chu畛i s
document.write(s.match(/ti$/gi)); //K畉t qu畉: Ti, v狸 ch畛 Ti n畉m 畛 v畛 tr鱈
cu畛i chu畛i s v tho畉 m達n i畛u ki畛n t狸m ki畉m /gi (t狸m ton c畛c ko ph但n bi畛t
ch畛 hoa, ch畛 th動畛ng)
document.write ("<BR>");
document.write(s.match(/bti/gi));//K畉t qu畉: ti,Ti v狸 2 ch畛 ny n畉m 畛 v畛
tr鱈 畉u c畛a 2 t畛 ti, Ti trong chu畛i s
document.write ("<BR>");
document.write(s.match(/Bai/gi));//K畉t qu畉: ai, v狸 ch畛 ny n畉m 畛 ph鱈a
cu畛i c畛a ch畛 hai trong chu畛i s
document.write ("<BR>");
document.write(s.match(/th(?=u)/gi));//K畉t qu畉: Th,th, v狸 2 ch畛 ny c坦
theo sau (?=) l u, l 2 ch畛 Thu, thu trong chu畛i g畛c.
document.write ("<BR>");
document.write(s.match(/t(?!h)/gi));//K畉t qu畉: t,t,T, v狸 3 ch畛 ny kh担ng
theo sau (?!) b畛i ch畛 h, t動董ng 畛ng v畛i t , ti, Ti trong chu畛i g畛c.
</script>
</head>
</html>
C叩c l畛p k箪 t畛 trong regex:
[xyz]: T狸m m畛t k箪 t畛 b畉t k畛 n畉m trong t畉p k箪 t畛 gi畛a c畉p d畉u ngo畉c vu担ng
[x-z]: T狸m m畛t k箪 t畛 b畉t k畛 n畉m trong t畉p k箪 t畛 t畛 x 畉n z
[^xyz]: T狸m m畛t k箪 t畛 b畉t k畛 kh担ng thu畛c t畉p k箪 t畛 gi畛a c畉p d畉u ngo畉c vu担ng.
.: T狸m b畉t k畛 m畛t k箪 t畛 no kh担ng ph畉i l k箪 t畛 xu畛ng d嘆ng m畛i (new line) ho畉c k箪 t畛 k畉t th炭c
d嘆ng (line terminator).
w: T狸m m畛t k箪 t畛 d畉ng a-Z, 0-9 v d畉u g畉ch d動畛i.
W: Ng動畛c l畉i v畛i w
d: T狸m m畛t k箪 t畛 thu畛c t畉p k箪 t畛 t畛 0 畉n 9
D: Ng動畛c l畉i v畛i d: T狸m m畛t k箪 t畛 kh担ng n畉m trong t畉p k箪 t畛 t畛 0 畉n 9
s: T狸m k箪 t畛 c叩ch (d畉u c叩ch)
S:T狸m m畛t k箪 t畛 kh担ng ph畉i l d畉u c叩ch
V鱈 d畛:
HTML Code:
<html>
<body>
<script type="text/javascript">
var str = "1 voi 1 la 2, 2 them 2 la 4";
// tr畉 v畛 m畉ng ch畛a c叩c k箪 t畛 trong o畉n t畛 e t畛i h
document.write(str.match(/[e-h]/gi));//K畉t qu畉: h,e, v畛i h,e n畉m trong ch畛
them.
document.write ("<BR>");
// Tr畉 v畛 m畉ng c叩c k箪 t畛 kh担ng thu畛c t畉p c叩c k箪 t畛 t畛 a-m v k箪 t畛 u:
document.write(str.match(/[^a-mu ]/gi));//K畉t qu畉: 1,v,o,1,2,,,2,t,2,4
16. document.write ("<BR>");
// T狸m c叩c chu畛i con b畉t 畉u b畛i ch畛 oi, ti畉p theo sau 坦 l 1 k箪 t畛 thu畛c
l畛p W:
document.write(str.match(/oiW/gi));//oi
document.write ("<BR>");
// T狸m c叩c k箪 t畛 l c叩c ch畛 s畛:
document.write(str.match(/d/gi));//1,1,2,2,2,4
document.write ("<BR>");
// T狸m c叩c chu畛i b畉t 畉u b畛i 1 k箪 t畛 thu畛c l畛p D, sau 坦 l 1 k箪 t畛 kh担ng
thu畛c nh坦m t畛 b-t:
document.write(str.match(/D[^b-t ]/g));//v, 1,la, 2, 2, 2,la, 4
document.write ("<BR>");
// T狸m c叩c d畉u c叩ch:
document.write(str.match(/s/g));//, , , , , , , ,
</script>
</body>
</html>
C叩c ph辿p l畉p trong regex
RegEx cho ph辿p t狸m ki畉m l畉p b棚n trong bi畛u th畛c:
{x}: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 x l畉n
{x,y}: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 t畛 x 畉n y l畉n
{x,}: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 >= x l畉n
?: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 0 ho畉c 1 l畉n
*: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 >=0 l畉n
+: L畉p m畛t k箪 t畛 ho畉c m畛t bi畛u th畛c con tr動畛c 坦 >=1 l畉n
V鱈 d畛:
HTML Code:
<html>
<body>
<script type="text/javascript">
var str = "Ai mua xoi deeeeee";
// T狸m m畛t chu畛i bao g畛m c叩c ch畛 c叩i d ho畉c e (l畛p [de], l畉p l畉i 3 l畉n:
document.write (str.match(/[de]{3}/g));//dee,eee
// T狸m m畛t chu畛i bao g畛m c叩c ch畛 c叩i d ho畉c e, l畉p l畉i >=3 l畉n:
document.write (str.match(/[de]{3,}/g));//deeeeee
// T狸m m畛t chu畛i bao g畛m c叩c ch畛 c叩i d ho畉c e, l畉p l畉i t畛 3 畉n 5 l畉n:
document.write (str.match(/[de]{3,5}/g))//deeee
// Tim chu d, sau chu d la 0 hoac 1 chu e
document.write (str.match(/de?/g));
// Tim chu d, sau chu d la 0 hoac n chu e
document.write (str.match(/de*/g));
// Tim chu d, sau chu d la 1 hoac n chu e
document.write (str.match(/de+/g));
//Tim tat ca cac tu bao gom cac chu cai tu a den z
17. document.write (str.match(/[a-z]*/gi));
//Tim tat ca cac tu bao gom cac chu cai tu a den z, sau tu la mot dau cach:
document.write (str.match(/[a-z]* +/gi));
</script>
</body>
</html>
G畛p nh坦m c叩c bi畛u th畛c
Ch炭ng ta c坦 th畛 s畛 d畛ng c叩c d畉u ngo畉c tr嘆n () 畛 g畛p nh坦m nh動 trong c叩c bi畛u th畛c to叩n h畛c
th担ng th動畛ng.
(): T狸m ki畉m m畛t nh坦m c叩c k箪 t畛 b棚n trong c畉p d畉u ngo畉c v l動u vo chu畛i k畉t qu畉.
(?: ): T狸m ki畉m chu畛i k畉t qu畉 kh担ng ch畛a t畉p k箪 t畛 n畉m trong c畉p d畉u ngo畉c.
|: Ph辿p to叩n ho畉c, 動畛c s畛 d畛ng 畛 k畉t h畛p c叩c m畛nh 畛 v畛i nhau vo chung m畛t bi畛u th畛c
V鱈 d畛:
HTML Code:
<html>
<body>
<script type="text/javascript">
var str = "Email: mail@ttt.com, test@ttt.com.vn, sinhln@hnue.edu.vn";
// Tim tat ca cac dia chi email trong chuoi
document.write (str.match(/([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-
Z0-9]{2,4})+/gi));
//Tim tat ca cac so trong chuoi
str=" 12312 and 343 and 54q";
document.write (str.match(/[0-9]+/g));
// hoac
document.write(str.match(/d+/g));
</script>
</body>
</html>
Ph畉n 2: M畛t s畛 tr動畛ng h畛p 畛ng d畛ng
Qua ph畉n 坦, c叩c b畉n h畉n 達 hi畛u 動畛c regex l c叩i g狸, v b動畛c 畉u c坦 th畛 畛c hi畛u 動畛c 箪 ngh挑a
c畛a m畛t chu畛i regex. Bi ny i vo t狸m hi畛u m畛t s畛 v鱈 d畛 畛ng d畛ng regex 畛 x畛 l箪 c叩c bi to叩n
trong th畛c ti畛n.
I. T狸m ki畉m v thay th畉
H畉n c叩c b畉n 達 bi畉t, ph動董ng th畛c replace() trong Javascript n畉u 畛 ch畉 畛 b狸nh th動畛ng th狸 n坦 s畉
ch畛 t狸m v thay th畉 動畛c duy nh畉t chu畛i 畉u ti棚n 動畛c t狸m th畉y.
VD:
18. Code:
<script language="javascript">
var str="chuoi 1, chuoi 2, chuoi 3";
document.write (str.replace ("chuoi","cam")); // Ket qua: cam 1, chuoi 2, chuoi 3
</script>
V畉y lm th畉 no 畛 thay th畉 動畛c t畉t c畉 c叩c t畛 "chuoi" thnh "cam"?
畛 但y, ch炭ng ta c坦 th畛 s畛 d畛ng c叩c ph辿p t狸m ki畉m l畉p c畛a regex:
HTML Code:
<script language="javascript">
var str="chuoi 1, chuoi 2, chuoi 3";
// Chu畛i c畉n t狸m l 1 regex: /chuoi/gi, x叩c 畛nh t狸m ki畉m t畛 chuoi l畉p l畉i
cho 畉n cu畛i chu畛i g畛c v kh担ng ph但n bi畛t hoa th動畛ng
document.write (str.replace (/chuoi/gi,"cam")); // Ket qua: cam 1, cam 2, cam
3
</script>
II. H畛 tr畛 ki畛m tra d畛 li畛u theo m畉u regex
畛 但y c叩c b畉n c畉n lm quen v畛i m畛t ph動董ng th畛c trong l畛p RegExp c畛a javascript, 坦 l ph動董ng
th畛c test().
C炭 ph叩p:
bi畉n_regex.test(chu畛i_g畛c)
Ph動董ng th畛c ny tr畉 v畛 true n畉u nh動 chu畛i g畛c kh畛p v畛i gi叩 tr畛 tr畉 v畛 c畛a bi畉n_regex. Ng動畛c l畉i
l false.
V鱈 d畛:
HTML Code:
<script language="javascript">
// Khai b叩o 1 chu畛i th担ng th動畛ng
var str="Hello world!";
//Khai b叩o 1 chu畛i m畉u (bi畛u th畛c regex)
var patt=/Hello/g;
var result=patt.test(str);
document.write("Ket qua: " + result); // Tra ve true vi tim thay tu Hello
trong chuoi str
//M畛t m畉u chu畛i kh叩c
patt=/phpvn/g;
result=patt.test(str);
document.write("<br />Ket qua: " + result); // Tra ve false vi khong thay
chuoi phpvn trong chuoi str.
19. </script>
a. Ki畛m tra xem chu畛i nh畉p vo c坦 ph畉i l 1 s畛 hay kh担ng?
B狸nh th動畛ng, ch炭ng ta c坦 th畛 s畛 d畛ng c叩c hm k畉t h畛p nh動: isNaN, parseInt, parseFloat 畛
ki畛m tra xem 坦 c坦 ph畉i l m畛t s畛 hay kh担ng? 畛 但y t担i cung c畉p m畛t c叩ch kh叩c d湛ng regex:
o畉n m達 d動畛i 但y s畉 ch畛 ki畛m tra xem 但y c坦 ph畉i l 1 s畛 nguy棚n d動董ng hay kh担ng:
HTML Code:
<script language="javascript">
function phpvn_isDigit(myString)
{
var reg = /^d+$/;
return (reg.test(myString));
}
document.write (phpvn_isDigit("12345"));
</script>
o畉n m達 d動畛i 但y s畉 ki畛m tra xem c坦 ph畉i l 畉u vo l 1 s畛 nguy棚n hay ko (c坦 th畛 c坦 th棚m d畉u
+/- 畛 tr動畛c):
HTML Code:
function phpvn_isInt(myString)
{
var reg= /^(+|-)?d+$/;
return (reg.test(fData));
}
Ti畉p t畛c n但ng c畉p ki畛m tra xem chu畛i 畉u vo c坦 ph畉i l m畛t s畛 th畛c hay kh担ng.
M畛t chu畛i 動畛c coi l 1 s畛 th畛c n畉u nh動 n坦 b畉t 畉u b畛i 1 chu畛i s畛, c坦 1 d畉u ch畉m 畛 gi畛a v k畉t
th炭c b畛i 1 chu畛i s畛:
HTML Code:
function phpvn_isFloat(myString)
{
var reg= /^(+|-)?((d+(.d+)?)|([0].d+))$/;
return (reg.test(myString));
}
Nh動ng m畉u chu畛i tr棚n s畉 tr畉 v畛 false n畉u ng動畛i d湛ng g探 1 chu畛i d畉ng 123,123,123.45
20. Ngu畛n: phpvn.org
Tags: X畛l箪 chu畛i b畉ng Javascript - Regular Expression
No Response to X畛 l箪 chu畛i b畉ng Javascript Regular Expression
Comments are closed.
21. S畛d畛ng Regular Expression trong Javascript
B畉t 畉u t畛 phi棚n b畉n Javascript 1.2 th狸 Regular Expression 達 動畛c t鱈ch h畛p s畉n. Do 坦 t畛
tr狸nh duy畛t Internet Explorer 4.0 tr畛 v畛 sau, Netcapse 4.0 tr畛 v畛 sau, t畉t c畉 c叩c phi棚n b畉n c畛a
Mozilla Firefox, c叩c tr狸nh duy畛t ph畛 bi畉n hi畛n nay nh動 Chrome, Opera, Safari... 畛u s畛 d畛ng
Javascript>= 1.2 do 坦 ta 畛u c坦 th畛 s畛 d畛ng Regular Expression tr棚n c叩c tr狸nh duy畛t v畛a n棚u.
Khi c坦 nhu c畉u ki畛m tra t鱈nh h畛p l畛 c畛a d畛 li畛u, t狸m ki畉m ho畉c thay th畉 c叩c d畛 li畛u theo m畛t
nguy棚n t畉c no 坦 th狸 s畛 d畛ng Regular Expression s畉 gi炭p ta ti畉t ki畛m 動畛c r畉t nhi畛u th畛i gian.
ECMA l vi畉t t畉t c畛a t畛 ch畛c: "European Computer Manufacturers Association" 動畛c thnh l畉p vo nm
1959. Truy c畉p ecma-internation.org 畛 bi畉t th棚m th担ng tin.
N坦i th棚m v畛 qu叩 tr狸nh 動a Regular Expression vo Javascript. B畉t 畉u t畛 phi棚n b畉n ECMA-
262 th狸 Regular Expression 動畛c c担ng nh畉n l m畛t thnh ph畉n chu畉n trong ng担n ng畛. Do 坦
c叩c ng担n ng畛 l畉p tr狸nh ph叩t tri畛n tr棚n y棚u c畉u畉c t畉 c畛a b畉n ECMA-262 th狸 畛u h畛 tr畛 Regular
Expression. Phi棚n b畉n Javascript 1.2 l phi棚n b畉n ph叩t tri畛n d畛a tr棚n b畉n 畉c t畉 ECMA-262 do
坦 h畛 tr畛 s畉n Regular Expression. Ngoi Javascript c嘆n c坦 r畉t nhi畛u ng担n ng畛 kh叩c ph叩t tri畛n
tr棚n y棚u c畉u畉c t畉 c畛a ECMA-262 m ph畛 bi畉n nh畉t hi畛n nay l Action Script. Phi棚n b畉n
Action Script 3.0 h畛 tr畛 畉y 畛 畉c t畉 ECMA-262 do 坦 t畛 b畉n ny ch炭ng ta c坦 th畛 s畛 d畛ng
Regular Expression hon ton nh動 tr棚n Javascript.
C叩ch 畛 nh ngh挑a Regular Expression tr棚n Javascript
S畛 d畛ng Javascript ta c坦 th畛 vi畉t theo c叩ch nh動 sau: /pattern/modifiers v畛i pattern l m畉u m
ta c畉n s畛 d畛ng, modifiers l c叩c tham s畛 t湛y ch畛n th棚m. L動u 箪 l pattern l chu畛i b畉t bu畛c c嘆n
modifiers l t湛y ch畛n. C炭 ph叩p ny d畛a tr棚n c炭 ph叩p c畛a ng担n ng畛 Perl. D動畛i 但y l m畛t s畛 t畛
kh坦a modifers m Javascript h畛 tr畛:
/g b畉t ch畉 畛 t狸m ki畉m ton c畛c ("global" match). Khi ta s畛d畛ng c叩c hm nh動replace() th狸 ta
d湛ng tham s畛 ny 畛 thay th畉 h畉t t畉t c畉 c叩c chu畛i kh畛p v畛i i畛u ki畛n, ng動畛c l畉i kh担ng s畛d畛ng
th狸 ch畛 thay th畉 cho chu畛i 畉u ti棚n kh畛p v畛i i畛u ki畛n. (N畉u b畉n 達 s畛d畛ng PHP th狸 khi c坦 tham
s畛 /g trong Javascript t動董ng 畛ng v畛i b棚n PHP l hm preg_match_all() c嘆n kh担ng c坦 tham s畛 ny
th狸 t動董ng 畛ng l hm preg_match
/i b畉t ch畉 畛 t狸m ki畉m ph但n bi畛t hoa th動畛ng.
/m b畉t ch畉 畛 t狸m ki畉m tr棚n nhi畛u d嘆ng. M畉c 畛 nh Javascript ch畛 t狸m ki畉m tr棚n m畛t d嘆ng d湛 d畛
li畛u ta s畛d畛ng l nhi畛u d嘆ng.
Ch炭ng ta c坦 th畛 vi畉t g畛n c叩c tham s畛 ny. Thay v狸 /i/g/m ta c坦 th畛 s畛 d畛ng /igm.
M畛t s畛 l動u 箪 khi khai b叩o Regular Expression:
Kh担ng s畛d畛ng A v Z 畛 t狸m k箪 t畛営畉u d嘆ng v k畉t th炭c d嘆ng nh動Perl, ch炭ng ta s畛d畛ng ^ v $
畛 thay th畉
Ch動a h畛 tr畛t狸m ki畉m ng動畛c 畉y 畛, s畉 c坦 bi n坦i k畛 h董n v畛 v畉n 畛 ny. H畛 tr畛D畉y 畛 t狸m ki畉m
thu畉n
Kh担ng h畛 tr畛Unicode, tr畛tr動畛ng h畛p ta t狸m ch鱈nh x叩c t畛ng k箪 t畛theo m達 v鱈 d畛 nh動uFFFF
22. Kh担ng h畛 tr畛Di畛u ki畛n trong chu畛i "pattern"
Kh担ng h畛 tr畛ch炭 th鱈ch trong chu畛i "pattern". 畛 ch炭 th鱈ch cho o畉n m畉u c畛a ch炭ng ta h達y s畛
d畛ng // 畛b棚n ngoi.
Ch炭 th鱈ch th棚m: Khi khai b叩o b畉ng c叩ch ny th畛c ch畉t l ch炭ng ta s畛 d畛ng c叩ch vi畉t t畉t c畛a
Javascript. C叩ch vi畉t ny l thay th畛 cho c畛m t畛 new RegExp() trong Javascript. V鱈 d畛 v畛 vi畛c
d湛ng 畉y 畛 nh動 sau:
var test = /pattern/ t動董ng 動董ng v畛i var test = new RegExp("pattern")
var test = /pattern/modifiers t動董ng 動董ng v畛i var test = new RegExp("pattern",
"modifiers")
M畛t s畛 hm x畛 l箪 chu畛i s畛 d畛ng Regular Expression
C叩ch 董n gi畉n nh畉t l ta s畛 d畛ng hm match() 畛 ki畛m tra. V鱈 d畛: if
(myString.match(/regex/)) { /** T狸m th畉y chu畛i c畉n t狸m **/ }
畛 t狸m v thay th畉 chu畛i, ta s畛 d畛ng hm replace() theo c炭 ph叩p:
myString.replace(/replaceme/g, "replacement"); Ch炭 箪 l炭c s畛 d畛ng hm ny ta n棚n s畛
d畛ng tham s畛 /g 畛 t狸m v thay th畉 畉y 畛 h畉t, tham s畛 th畛 2 c畛a hm l m畛t chu畛i b狸nh th動畛ng
ta c畉n thay th畉. 畛 s畛 d畛ng l畉i ch鱈nh chu畛i ta t狸m th畉y 畛 s畛 d畛ng l畉i trong l炭c thay th畉, ta s畛
d畛ng c叩c k箪 t畛 t畛 $1 畉n $9 畛 lm, v畛i c叩c con s畛 ch鱈nh l v畛 tr鱈 動畛c t狸m th畉y c畛a m畛t c畛m t畛
t動董ng 畛ng v畛i "pattern" m ta 達 nh畉p vo theo c叩c i畛u ki畛n.
Cu畛i c湛ng, hm split() c滴ng h畛 tr畛 Regular Expression. V鱈 d畛: var myArray =
myString.split(/,/);
C叩c hm trong 畛i t動畛ng Regular Expression
Khi khai b叩o m畛t chu畛i Regular Expression (a s畛 ch炭ng ta d湛ng c叩ch r炭t g畛n) th狸 ch炭ng ta 達
t畉o ra m畛t 畛i t動畛ng RegExp, v畛i c叩c hm 動畛c 畛nh ngh挑a nh動 sau:
test() Hm ny s畉 ki畛m tra tham s畛 truy畛n vo c坦 tr湛ng v畛i chu畛i "pattern" m ta 達 畛nh ngh挑a
hay kh担ng. Hm tr畉 v畛 gi叩 tr畛 true n畉u chu畛i nh畉p vo c坦 m畉u ta c畉n t狸m v false n畉u t狸m kh担ng
th畉y.
exec() Hm ny tr畉 v畛 m畛t m畉ng ch畛a c叩c o畉n tr湛ng kh畛p v畛i "pattern" ch炭ng ta 畛nh ngh挑a v
tr畉 v畛 null n畉u kh担ng t狸m th畉y.
Ch炭ng ta c嘆n c坦 th畛 s畛 d畛ng r炭t g畛n m kh担ng c畉n khai b叩o chu畛i Regular Expression. V鱈 d畛:
/d/.test(subject) l c叩ch vi畉t nhanh 畛 ki畛m tra xem trong chu畛i subject ta nh畉p vo c坦
con s畛 no kh担ng.
23. Regular Expressions trong PHP [PHP]
1. Gi畛i thi畛u
Regular Expression l g狸?
+ Bi畛u th畛c ch鱈nh quy.
+ Hi畛u n担m na l 1 chu畛i c坦 quy t畉c 畛 m担 t畉 nh畛ng chu畛i(string) kh叩c.
Lm vi畛c v畛i string th動畛ng r畉t v畉t v畉 v 嘆i h畛i 畛 ch鱈nh x叩c cao. v畛i Regular Expression trong PHP, c担ng
vi畛c ny 動畛c 董n gi畉n i r畉t nhi畛u. 1 d嘆ng code trong PHP lm vi畛c v畛i string trong tr動畛ng h畛p ny c坦
th畛 s叩nh v畛i hng trang code trong c叩c ng担n ng畛kh叩c.
Ta c坦 th畛 畛ng d畛ng nh畛ng o畉n code 董n gi畉n 畛tr棚n vo c叩c form 嘆i h畛i nh畉p d畛li畛u, th担ng tin ng動畛i
d湛ng, ... hay d湛ng 畛 l畛c c叩c bi畉n 動畛c truy畛n.
2. Hm preg_match trong PHP
Trong PHP c坦 m畛t hm l preg_mathch(string pattern, string subject). Hm ny tr畉 v畛 1 n畉u 炭ng quy
t畉c so m畉u, tr畉 v畛 0 n畉u sai quy t畉c so m畉u.
V畛i:
string pattern: l bi畛u th畛c d湛ng 畛 so m畉u. C叩c chu畛i 動畛c so m畉u ph畉i tu但n th畛 quy t畉c c畛a bi畛u th畛c
ny.
string subject: l chu畛i 動畛c so m畉u.
M畛t pattern (bi畛u th畛c so m畉u) c坦 d畉ng:
$pattern = "/ thi畉t_l畉p quy_t畉c_畛但y /";
Bi畛u th畛c so m畉u n畉m gi畛a hai d畉u "/", v hai d畉u "/" ny n畉m trong c畉p nh叩y 担i.
畛 vi畉t regular expression ta c畉n lm quen v畛i nh畛ng k箪 t畛c坦 { ngh挑a 畉c bi畛t trong m畛t regular
expression 坦 l c叩c Meta symbols
Meta Symbols ngh挑a
^ B畉t 畉u d嘆ng (string)
$ K畉t th炭c d嘆ng (string)
24. . 畉i di畛n cho m畛t k箪 t畛b畉t kz
+
L畉p l畉i k箪 t畛hay c畛m k箪 t畛営畛ng tr動畛c n坦 (>=1)
V鱈 d畛: a+ : ngh挑a l l畉p l畉i ch畛a v ph畉i c坦 鱈t nh畉t l m畛t ch畛a. Do v畉y m畛i ghi >=1 cho d畛
hi畛u.
- 123a: 1(炭ng)
- 123aa: 1(炭ng)
- 123 : 0(sai). v狸 kh担ng c坦 ch畛a no 動畛c l畉p.
*
C滴ng l l畉p l畉i k箪 t畛hay c畛m k箪 t畛営畛ng tr動畛c n坦 (>=0)
V鱈 d畛: a* : ngh挑a l l畉p l畉i ch畛a, n畉u kh担ng c坦 ch畛a c滴ng kh担ng sao. Do v畉y m >=0
-123a: (1)
-123aaa: (1)
-123: (1). Kh担ng c坦 ch畛a c滴ng kh担ng sao.
? T畛n t畉i hay kh担ng t畛n t畉i k箪 t畛hay c畛m k箪 t畛営畛ng tr動畛c n坦
D畉u i k竪m v畛i 1 meta symbol s畉 lm m畉t { ngh挑a c畛a meta symbol 坦 - tr畉 v畛 symbol
b狸nh th動畛ng.
V鱈 d畛:
$patern = "/.../"; (trong d畉u...ta thay c叩c bi畛u th畛c sau)
^a : B畉t 畉u c畛a d嘆ng l k箪 t畛a. D嘆ng ny c坦 th畛 l abcd, aaaa, a4684,.... mi畉n sao b畉t 畉u b畉ng k箪 t畛a.
^string$ : D嘆ng ny mang gi叩 tr畛 c畛ng l string v狸 n坦 b畛 ch畉n gi畛a ^ v $. Ngh挑a l ch畛 c坦 ch畛string m畛i
炭ng, c嘆n l畉i th狸 sai h畉t.
T畛b但y gi畛th狸 ta s畉 s畛d畛ng: $pattern = "/^...$/"; ^ :b畉t 畉u m畛t d嘆ng, $ :k畉t th炭c m畛t d嘆ng
a. :c坦 th畛 mang gi叩 tr畛 : ab, a1, au, af .Nh動ng kh担ng th畛 l abc, ab1, v狸 d畉u . chi 畉i di畛n cho m畛t k箪 t畛!
ax+ :bi畛u di畛n cho d嘆ng: ax, axx, axxxx - nh動ng kh担ng th畛 l "a" v狸 + 畉i di畛n cho >=1 k箪 t畛.
ay* :bi畛u di畛n cho d嘆ng: a, ay, ayy, ayyyyyyyyy,....
ab? :bi畛u di畛n cho: a, ab (b c坦 th畛 c坦 ho畉c kh担ng)
25. a+b :bi畛u di畛n cho d嘆ng: "a+b"
C叩ch bi畛u di畛n s畛v ch畛c叩i
d : Bi畛u di畛n m畛t con s畛b畉t kz.
V鱈 d畛:
$reg5="/^d$/"; // chi co 1 chu so
$reg5a="/^dd$/"; // chi co 2 chu so
$reg5b = "/^10Adddddd$/"; // 10A123456
D : K箪 t畛b畉t kz kh担ng ph畉i l ch畛s畛(ng動畛c v畛i d)
V鱈 d畛:
$reg = "/^D$/"; // bieu dien mot ky tu bat k畛 khong phai la so
$reg ="/^dDdD$/"; bieu dien m畛t chuoi co dang 1a2b. V畛i a,b l k箪 t畛 b畉t
k畛 khong phai la so
w - K箪 t畛t畛a-z, A-Z, ho畉c 0-9
V鱈 d畛:
$reg6 = "/^www$/"; // chi gom 3 ky tu t畛 a->z, A->Z, 0->9. Khong co ky tu
dac biet
$reg7 ="/^w+@w+.w+$/"; // kiem tra email teo@yahoo.com
W - Ng動畛c l畉i v畛i w (ngh挑a l c叩c k{ t畛kh担ng thu畛c c叩c kho畉ng: a-z, A-Z, ho畉c 0-9)
Ngh挑a l ch畛 ch畛a c叩c k箪 t畛営畉c bi畛t
V鱈 d畛:
$reg = "/^W$/"; // chua m畛t k箪 tu khong thuoc t湛 a-z , A-Z, 0-9
26. s+ - C坦 ngh挑a: c坦 >=1 kho畉ng tr畉ng.
V鱈 d畛:
$reg ="/^w+sd+$/"; // bieu dien a 1, g 22, abc 123
ngh挑a c叩c d畉u ngo畉c tr嘆n, ngo畉c nh畛n, ngo畉c vu担ng
Ngo畉c tr嘆n: () : d湛ng 畛 gom c叩c k箪 t畛thnh m畛t nh坦m
V鱈 d畛:
$reg = "/^d(ab)+$/"; bieu dien 1ab, 1abab, 1ababab. L畉p l畉i ab v担 h畉n
Ngo畉c nh畛n {}: d湛ng 畛 l畉p k箪 t畛hay c畛m k箪 t畛営畛ng tr動畛c n坦 v畛i s畛l動畛ng x叩c
畛 nh
+ {3}: l畉p l畉i ch畛 3 l畉n.
+ {3,}: l畉p l畉i >=3.
+ {3,10}: l畉p l畉i t畛3 畉n 10 l畉n.
V鱈 d畛:
$reg8 = "/^d{3}$/"; // lap chi 3 so
$reg8a = "/^d{3,}$/"; // lap >=3
$reg9 = "/^a(xy){2,}$/"; // lap xy toi thieu tu 2 lan tro len
$reg9a = "/^a(xy|12){2,}$/"; // lap xy hoac 12 toi thieu 2 lan tro len
D畉u g畉ch th畉ng 畛ng 畛 l畛a ch畛n ho畉c c叩i ny ho畉c c叩i kia
V鱈 d畛:
$reg16 = "/^[a-zA-Z0-9]+.(jpg|png|gif|jpeg|JPG|PNG|GIF|JPEG)$/"; // kiem tra
file hinh co duoi khac nhau
D畉u ngo畉c vu担ng 畛 ch畛 o畉n k箪 t畛cho ph辿p
+ [a-z] : ch畛 c叩c ch畛t畛a 畉n z
+ [A-Z] : ch畛 c叩c ch畛t畛A 畉n Z
27. + [0-9] : ch畛 c叩c s畛t畛0-9
+ [a-zA-z0-9] : c叩c ch畛t畛a-z, A-Z, 0-9
V鱈 d畛:
$reg13 = "/^[3-7]$/"; // chi co 1 so trong khoang tu 3 den 7
3. Hm preg_replace trong PHP
Hm ny d湛ng 畛 t狸m m畛t string theo quy t畉c v thay th畉 string 坦 theo m狸nh mu畛n.
C炭 ph叩p:
preg_replace(mixed regex, mixed replace, mixed subject);
mixed regex: bi畛u th畛c so m畉u
mixed replace: m畉u thay th畉.
mixed: chu畛i m畉
V鱈 d畛:
preg_replace("/(d{3})/","<u>$1</u>","abc 123 efg");
T狸m chu畛i 123 v g畉ch d動畛i n坦. K畉t qu畉 abc 123 efg
Ch炭 箪:
- C畛1 nh坦m trong d畉u ngo畉c tr嘆n 動畛c 畉i di畛n b畉ng c叩c bi畉n $ l 動畛c 叩nh d畉u l畉n l動畛t t畛tr叩i sang
ph畉i, b畉t 畉u l $1, ti畉p theo l $2 , $3...
- N畉u thay th畉 n坦 b畉ng m畛t c叩i kh叩c th狸 kh担ng c坦 $1, $2, $3...C嘆n n畉u ch畛 thay 畛i n坦 th狸 d湛ng $1, $2,
$3.. nh動v鱈 d畛メtr棚n.
V鱈 d畛
preg_replace("/^<div(s+)(id='teo')?>(s+)?(.*)(s+)?</div>$/","<b><u
>$4</u></b>","<div id='teo'> Nguyen Van Teo </div>");
T狸m <div id='teo'> Nguyen Van Teo </div> v thay 畛i n坦 thnh <b><u>Nguyen Van Teo</u></b>
L動u 箪:
28. Bi畛u th畛c so m畉u vi畉t li畛n, kh担ng kho畉ng tr畉ng. N畉u chu畛i m畉 c坦 kho畉ng tr畉ng th狸 m狸nh th棚m vo bi畛u
th畛c so m畉u l (s+). Khi 坦 nh畛畉m c畛m d畉u ngo畉c 畛 x叩c 畛 nh bi畉n $ cho ch鱈nh x叩c.
4. Hm preg_split trong PHP
Hm ny c坦 t叩c d畛ng c畉t chu畛i gi畛ng nh動hm explore, nh動ng hm explore ph畉i ki畉m 炭ng theo k{ t畛,
c嘆n hm ny ki畉m theo quy t畉c
C炭 ph叩p:
preg_split(string pattern, string subject);
string pattern: bi畛u th畛c so m畉u
string subject: chu畛i m畉
Ch炭 箪:hm ny tr畉 v畛 m畛t m畉ng
V鱈 d畛:
$macth = preg_split("/#/","abc#123#efg");
print_r($macth);