10-3 �q�������C��

¸g¹L¤F«e¨â¸`ªº¤¶²Ð¡A§Ú·Q¦U¦ì¦P¾Ç³£¯àÁA¸Ñ¨ì¥¿³W¦¡ªº«Â¤O¬OµL»·¥±©¡ªº¡A¦ý¦p¦ó¾A¤Áªºµo´§¥¿³W¦¡ªº¥\¯à¡A´N­n¬Ýµ{¦¡³]­pªÌªº¸gÅç©M¥\¤O¤F¡C ¤Uªí¾ã²z¥X±`¥Î¨ìªº¥¿³W¦¡¡A¤è«K¦U¦ì¦P¾Ç¯à¶i¦æ§Ö³t´M§ä¤ÎÀ³¥Î¡C

»P³q¥Î¦¡¬ÛÃöªº¤èªk¥i¦Cªí¦p¤U¡G

»P³q¥Î¦¡¬ÛÃöªº¤èªk¥\¯à
re.exec(string)±q¦r¦ê string ©â¨ú²Å¦X³q¥Î¦¡ re ªº¤l¦r¦ê¡A¨Ã¥H¦r¦ê°}¦C¶Ç¦^
re.test(string)¥H¦r¦ê string ¤ñ¹ï³q¥Î¦¡ re¡A¨Ã¶Ç¦^¤ñ¹ïµ²ªG¡]true ¥Nªí¤ñ¹ï¦¨¥\¡Afalse ¥Nªí¤ñ¹ï¥¢±Ñ¡^
string.search(re)³q¥Î¦¡ re ¦b¬Y­Ó¦r¦ê string ¥X²{ªº¦ì¸m
string.match(re)±q¦r¦ê string ©â¨ú²Å¦X³q¥Î¦¡ re ªº¤l¦r¦ê¡A¨Ã¥H¦r¦ê°}¦C¶Ç¦^¡A¦¹¥\¯à©M re.exec(string) ¬Û¦P
string.replace(re, newStr)±N¦r¦ê string ²Å¦X³q¥Î¦¡ re ªº³¡¤À¡A¥N´«¬° newStr

¦b¤U¦Cªºªí®æ¤¤¡A§Ú­Ì¨Ï¥Î´X­Ó²³æªº½d¨Ò¨Ó¹ï³q¥Î¦¡ªºÀ³¥Î°µ¸û§¹¾ãªº»¡©ú¡G

³q¥Î¦¡»¡©ú¤Î½d¨Ò¤ñ¹ï¤£¦¨¥ß¤§¦r¦ê
/a/§t¦r¥À "a" ªº¦r¦ê¡A¨Ò¦p "ab", "bac", "cba""xyz"
/a./§t¦r¥À "a" ¥H¤Î¨ä«á¥ô¤@­Ó¦r¤¸ªº¦r¦ê¡A¨Ò¦p "ab", "bac"¡]­Y­n¤ñ¹ï.¡A½Ð¨Ï¥Î \.¡^"a", "ba"
/^xy/¥H "xy" ¶}©lªº¦r¦ê¡A¨Ò¦p "xyz", "xyab"¡]­Y­n¤ñ¹ï ^¡A½Ð¨Ï¥Î \^¡^"axy", "bxy"
/xy$/¥H "xy" µ²§Àªº¦r¦ê¡A¨Ò¦p "axy", "abxy"¥H "xy" µ²§Àªº¦r¦ê¡A¨Ò¦p "axy", "abxy" ¡]­Y­n¤ñ¹ï $¡A½Ð¨Ï¥Î \$¡^"xya", "xyb"
/[13579]/¥]§t "1" ©Î "3" ©Î "5" ©Î "7" ©Î "9" ªº¦r¦ê¡A¨Ò¦p¡G"a3b", "1xy""y2k"
/[0-9]/§t¼Æ¦r¤§¦r¦ê¤£§t¼Æ¦r¤§¦r¦ê
/[a-z0-9]/§t¼Æ¦r©Î¤p¼g¦r¥À¤§¦r¦ê¤£§t¼Æ¦r¤Î¤p¼g¦r¥À¤§¦r¦ê
/[a-zA-Z0-9]/§t¼Æ¦r©Î¦r¥À¤§¦r¦ê¤£§t¼Æ¦r¤Î¦r¥À¤§¦r¦ê
/b[aeiou]t/"bat", "bet", "bit", "bot", "but""bxt", "bzt"
/[^0-9]/¤£§t¼Æ¦r¤§¦r¦ê¡]­Y­n¤ñ¹ï ^¡A½Ð¨Ï¥Î \^¡^§t¼Æ¦r¤§¦r¦ê
/[^aeiouAEIOU]/¤£§t¥À­µ¤§¦r¦ê¡]­Y­n¤ñ¹ï ^¡A½Ð¨Ï¥Î \^¡^§t¥À­µ¤§¦r¦ê
/[^\^]/¤£§t "^" ¤§¦r¦ê¡A¨Ò¦p "xyz", "abc""xy^", "a^bc"

½Ðª`·N¦b¤Wªí¤¤¡A"^" ¦b¨â±ø±×½u¤¤¡A¥Nªí¤@­Ó¦r¦êªº¶}©l¦ì¸m¡A¦]¦¹ /^xy/ ¥Nªí¥H "xy" ¶}©lªº¦r¦ê¡C ¦P²z¡A"$" ¦b¨â±ø±×½u¤¤¡A¥Nªí¤@­Ó¦r¦êªºµ²§ô¦ì¸m¡A¦]¦¹ /xy$/ ¥Nªí¥H "xy" µ²§ôªº¦r¦ê¡C ¦ý¬O¦pªG±N "^" ©ñ¦b¨â­Ó¤è¬A©·¤¤¡A´N¥Nªí¡u§_©w¡v¡A¦]¦¹ [^aeiouAEIOU] ¥Nªí¤£§t¥À­µ¤§¦r¤¸¡C

¥t¥~¡A­Y­nÁ×±¼¯S®í¦r¤¸ªº¯S®í·N¸q¡A´N­n¦b¦¹¦r¤¸«e¥[¤W "\"¡A¨Ò¦p¤Wªí¤¤ªº³Ì«á¤@¦C¡A"^" ¦b¤è¬A©·¸Ì­±¬O¥Nªí¡u§_©w¡v¡A¦]¦¹­Y­n¦b¤è¬A©·¸Ì­±¤ñ¹ï "^"¡A´N­n¨Ï¥Î "\^"¡A©Ò¥H¡u¤£§t "^" ¤§¦r¦ê¡vªº³q¥Î¦¡´N¬O "[^\^]"¡C

¥H RegExp(pattern, flag) ªº¤è¦¡¨Ó«Ø¥ß³q¥Î¦¡ª«¥ó®É¡A­Y pattern ¥]§t¥H¤Ï±×½u¶}ÀYªº¯S®í¦r¤¸¡]¨Ò¦p \d¡B\w¡B\s µ¥¡^®É¡A§Ú­Ì¥²¶·¦A¥[¤W¤@­Ó¤Ï±×½u¨Ó«O¯d¨ä¯S®í·N¸q¡C¨Ò¦p¡G

re = /\d+\s\w+/g ¥H RegExp ¬°¥Dªºµ¥®Äªí¥Üªk¬°¡G re = new RegExp("\\d+\\s\\w+", "g");

¦³¨Ç³q¥Î¦¡·|±`³Q¥Î¨ì¡A¦]¦¹¤w³Q©w¸q¬°¯S©w¦r¤¸¡A¥H²¤Æ¾ãÅé³q¥Î¦¡¡A³o¨Ç¦r¤¸¥i¦Cªí»¡©ú¦p¤U¡G

³q¥Îªí¥Üªkªº¯S©w¦r¤¸»¡©úµ¥®Äªº³q¥Îªí¥Üªk
\d¼Æ¦r[0-9]
\D«D¼Æ¦r[^0-9]
\w¼Æ¦r¡B¦r¥À¡B©³½u[a-zA-Z0-9_]
\W«D \w[^a-zA-Z0-9_]
\sªÅ¥Õ¦r¤¸[ \r\t\n\f]
\S«DªÅ¥Õ¦r¤¸[^ \r\t\n\f]

¦¹¥~¡A§Ú­Ì¥i©w¸q¦r¤¸ªº­«½Æ¦¸¼Æ¡A¦p¤U¡G

³q¥Îªí¥Üªk»¡©ú
/a?/¹s©Î¤@­Ó a¡]­Y­n¤ñ¹ï? ¦r¤¸¡A½Ð¨Ï¥Î \?¡^
/a+/¤@©Î¦h­Ó a¡]­Y­n¤ñ¹ï+ ¦r¤¸¡A½Ð¨Ï¥Î \+¡^
/a*/¹s©Î¦h­Ó a¡]­Y­n¤ñ¹ï* ¦r¤¸¡A½Ð¨Ï¥Î \*¡^
/a{4}/¥|­Ó a
/a{5,10}/¤­¦Ü¤Q­Ó a
/a{5,}/¦Ü¤Ö¤­­Ó a
/a{,3}/¦Ü¦h¤T­Ó a
/a.{5}b/a ©M b¤¤¶¡§¨¤­­Ó¡]«D´«¦æ¡^¦r¤¸

¬Û«H¦U¦ì²{¦b¤w¸g¥i¥HÅé·|¨ì³q¥Îªí¥Ü¦¡ªº«Â¤O¤F¡I

¥H¤U¦A¹ï³q¥Î¦¡¡A¶i¦æ¤ñ¸û§¹¾ãªº¦Cªí»P»¡©ú¡G

¦r¤¸ »¡©ú ²³æ½d¨Ò
\ Á×¶}¯S®í¦r¤¸ /A\*/ ¥i¥Î©ó¤ñ¹ï "A*"¡A¨ä¤¤ * ¬O¤@­Ó¯S®í¦r¤¸¡A¬°Á×¶}¨ä¯S®í·N¸q¡A©Ò¥H¥²¶·¥[¤W "\"
^ ¤ñ¹ï¿é¤J¦Cªº°_©l¦ì¸m /^A/ ¥i¤ñ¹ï "Abcd" ¤¤ªº "A"¡A¦ý¤£¥i¤ñ¹ï "aAb"
$ ¤ñ¹ï¿é¤J¦Cªºµ²§ô¦ì¸m /A$/ ¥i¤ñ¹ï "bcdA" ¤¤ªº "A"¡A¦ý¤£¥i¤ñ¹ï "aAb"
* ¤ñ¹ï«e¤@­Ó¦r¤¸¹s¦¸©Î§ó¦h¦¸ /bo*/ ¥i¤ñ¹ï "Good boook" ¤¤ªº "booo"¡A¥ç¥i¤ñ¹ï "Good bk" ¤¤ªº "b"
+ ¤ñ¹ï«e¤@­Ó¦r¤¸¤@¦¸©Î§ó¦h¦¸¡Aµ¥®Ä©ó {1,} /a+/ ¥i¤ñ¹ï "caaandy" ¤¤ªº "aaa"¡A¦ý¤£¥i¤ñ¹ï "cndy"
? ¤ñ¹ï«e¤@­Ó¦r¤¸¹s¦¸©Î¤@¦¸ /e?l/ ¥i¤ñ¹ï "angel" ¤¤ªº "el"¡A¤]¥i¥H¤ñ¹ï "angle" ¤¤ªº "l"
. ¤ñ¹ï¥ô¦ó¤@­Ó¦r¤¸¡]¦ý´«¦æ²Å¸¹¤£ºâ¡^ /.n/ ¥i¤ñ¹ï "nay, an apple is on the tree" ¤¤ªº "an" ©M "on"¡A¦ý¤£¥i¤ñ¹ï "nay"
(x) ¤ñ¹ï x ¨Ã±N²Å¦Xªº³¡¤À¦s¤J¤@­ÓÅÜ¼Æ /(a*) and (b*)/ ¥i¤ñ¹ï "aaa and bb" ¤¤ªº "aaa" ©M "bb"¡A¨Ã±N³o¨â­Ó¤ñ¹ï±o¨ìªº¦r¦ê³]©w¦ÜÅÜ¼Æ RegExp.$1 ©M RegExp.$2¡C
x|y ¤ñ¹ï x ©Î y /a+|b+/g ¥i¤ñ¹ï "aaa k bb" ¤¤ªº "aaa" ©M "bb"
{n} ¤ñ¹ï«e¤@­Ó¦r¤¸ n ¦¸¡An ¬°¤@­Ó¥¿¾ã¼Æ /a{3}/ ¥i¤ñ¹ï "lllaaalaa" ¨ä¤¤ªº "aaa"¡A¦ý¤£¥i¤ñ¹ï "aa"
{n,} ¤ñ¹ï«e¤@­Ó¦r¤¸¦Ü¤Ö n ¦¸¡An ¬°¤@­Ó¥¿¾ã¼Æ /a{3,}/ ¥i¤ñ¹ï "aa aaa aaaa" ¨ä¤¤ªº "aaa" ¤Î "aaaa"¡A¦ý¤£¥i¤ñ¹ï "aa"
{n,m} ¤ñ¹ï«e¤@­Ó¦r¤¸¦Ü¤Ö n ¦¸¡A¦Ü¦h m ¦¸¡Am¡Bn §¡¬°¥¿¾ã¼Æ /a{3,4}/ ¥i¤ñ¹ï "aa aaa aaaa aaaaa" ¨ä¤¤ªº "aaa" ¤Î "aaaa"¡A¦ý¤£¥i¤ñ¹ï "aa" ¤Î "aaaaa"
[xyz] ¤ñ¹ï¤¤¬A©·¤ºªº¥ô¤@­Ó¦r¤¸ /[ecm]/ ¥i¤ñ¹ï "welcome" ¤¤ªº "e" ©Î "c" ©Î "m"
[^xyz] ¤ñ¹ï¤£¦b¤¤¬A©·¤º¥X²{ªº¥ô¤@­Ó¦r¤¸ /[^ecm]/ ¥i¤ñ¹ï "welcome" ¤¤ªº "w"¡B"l"¡B"o"¡A¥i¨£¥X¨ä»P [xyz] ¥\¯à¬Û¤Ï¡C¡]¦P®É½Ð¦P¾Ç¤]ª`·N /^/ »P [^] ¤§¶¡¥\¯àªº¤£¦P¡C¡^
[\b] ¤ñ¹ï°h¦ì¦r¤¸¡]Backspace character¡^ ¥i¥H¤ñ¹ï¤@­Ó backspace ¡A¤]½Ðª`·N [\b] »P \b ¤§¶¡ªº®t§O
\b ¤ñ¹ï­^¤å¦rªºÃä¬É¡A¨Ò¦pªÅ®æ ¨Ò¦p /\bn\w/ ¥i¥H¤ñ¹ï "noonday" ¤¤ªº 'no' ;
/\wy\b/ ¥i¤ñ¹ï "possibly yesterday." ¤¤ªº 'ly'
\B ¤ñ¹ï«D¡u­^¤å¦rªºÃä¬É¡v ¨Ò¦p, /\w\Bn/ ¥i¥H¤ñ¹ï "noonday" ¤¤ªº 'on' ,
¥t¥~ /y\B\w/ ¥i¥H¤ñ¹ï "possibly yesterday." ¤¤ªº 'ye'
\cX ¤ñ¹ï±±¨î¦r¤¸¡]Control character¡^¡A¨ä¤¤ X ¬O¤@­Ó±±¨î¦r¤¸ /\cM/ ¥i¥H¤ñ¹ï ¤@­Ó¦r¦ê¤¤ªº control-M
\d ¤ñ¹ï¥ô¤@­Ó¼Æ¦r¡Aµ¥®Ä©ó [0-9] /[\d]/ ¥i¤ñ¹ï ¥Ñ "0" ¦Ü "9" ªº¥ô¤@¼Æ¦r ¦ý¨ä¾l¦p¦r¥Àµ¥´N¤£¥i¤ñ¹ï
\D ¤ñ¹ï¥ô¤@­Ó«D¼Æ¦r¡Aµ¥®Ä©ó [^0-9] /[\D]/ ¥i¤ñ¹ï "w" "a"... ¦ý¤£¥i¤ñ¹ï¦p "7" "1" µ¥¼Æ¦r
\f ¤ñ¹ï form-feed ­Y¬O¦b¤å¦r¤¤¦³µo¥Í "´«­¶" ªº¦æ¬° «h¥i¥H¤ñ¹ï¦¨¥\
\n ¤ñ¹ï´«¦æ²Å¸¹ ­Y¬O¦b¤å¦r¤¤¦³µo¥Í "´«¦æ" ªº¦æ¬° «h¥i¥H¤ñ¹ï¦¨¥\
\r ¤ñ¹ï carriage return  
\s ¤ñ¹ï¥ô¤@­ÓªÅ¥Õ¦r¤¸¡]White space character¡^¡Aµ¥®Ä©ó [ \f\n\r\t\v] /\s\w*/ ¥i¤ñ¹ï "A b" ¤¤ªº "b"
\S ¤ñ¹ï¥ô¤@­Ó«DªÅ¥Õ¦r¤¸¡Aµ¥®Ä©ó [^ \f\n\r\t\v] /\S/\w* ¥i¤ñ¹ï "A b" ¤¤ªº "A"
\t ¤ñ¹ï©w¦ì¦r¤¸¡]Tab¡^  
\v ¤ñ¹ï««ª½©w¦ì¦r¤¸¡]Vertical tab¡^  
\w ¤ñ¹ï¼Æ¦r¦r¥À¦r¤¸¡]Alphanumerical characters¡^©Î©³½u¦r¥À¡]"_"¡^¡Aµ¥®Ä©ó [A-Za-z0-9_] /\w/ ¥i¤ñ¹ï ".A _!9" ¤¤ªº "A"¡B"_"¡B"9"¡C
\W ¤ñ¹ï«D¡u¼Æ¦r¦r¥À¦r¤¸©Î©³½u¦r¥À¡v¡Aµ¥®Ä©ó [^A-Za-z0-9_] /\W/ ¥i¤ñ¹ï ".A _!9" ¤¤ªº "."¡B" "¡B"!"¡A¥i¨£¨ä¥\¯à»P /\w/ «ê¦n¬Û¤Ï¡C
\ooctal ¤ñ¹ï¤K¶i¦ì¡A¨ä¤¤octal¬O¤K¶i¦ì¼Æ¥Ø /\oocetal123/ ¥i¤ñ¹ï »P ¤K¶i¦ìªºASCII¤¤ "123" ©Ò¬Û¹ïÀ³ªº¦r¤¸­È¡C
\xhex ¤ñ¹ï¤Q¤»¶i¦ì¡A¨ä¤¤hex¬O¤Q¤»¶i¦ì¼Æ¥Ø /\xhex38/ ¥i¤ñ¹ï »P 16¶i¦ìªºASCII¤¤ "38" ©Ò¬Û¹ïÀ³ªº¦r¤¸¡C


JavaScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©óºô­¶¥Î¤áºÝ