{"id":4069,"date":"2024-07-15T18:01:13","date_gmt":"2024-07-15T11:01:13","guid":{"rendered":"https:\/\/www.marketenterprise.vn\/blog\/?p=4069"},"modified":"2024-07-23T10:26:58","modified_gmt":"2024-07-23T03:26:58","slug":"boundaries-and-anchors","status":"publish","type":"post","link":"https:\/\/www.marketenterprise.vn\/blog\/boundaries-and-anchors.html","title":{"rendered":"Kh\u00e1m ph\u00e1 v\u00e0i \u0111i\u1ec1u v\u1ec1 Boundaries v\u00e0 Anchors b\u1ea1n \u0111\u00e3 bi\u1ebft ch\u01b0a?"},"content":{"rendered":"<p>Ch\u00fang ta \u0111\u00e3 \u0111\u1ec1 c\u1eadp v\u1ec1 c\u00e1c k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t (<a href=\"https:\/\/www.marketenterprise.vn\/blog\/literal-characters.html\">Special Characters<\/a>) trong b\u00e0i vi\u1ebft tr\u01b0\u1edbc, nh\u01b0ng ch\u01b0a \u0111i v\u00e0o chi ti\u1ebft v\u1ec1 ch\u1ee9c n\u0103ng v\u00e0 vai tr\u00f2 c\u1ee7a ch\u00fang. Trong b\u00e0i n\u00e0y, ch\u00fang ta s\u1ebd t\u1eadp trung v\u00e0o m\u1ed9t s\u1ed1 k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng nh\u01b0 ^, $, v\u00e0 \\. Nh\u1eefng k\u00fd t\u1ef1 n\u00e0y \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng trong vi\u1ec7c x\u00e1c \u0111\u1ecbnh c\u00e1c v\u1ecb tr\u00ed ch\u00ednh x\u00e1c trong chu\u1ed7i m\u00e0 ch\u00fang ta c\u1ea7n ki\u1ec3m tra ho\u1eb7c x\u1eed l\u00fd. Th\u01b0\u1eddng \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn d\u01b0\u1edbi hai t\u00ean g\u1ecdi ch\u00ednh l\u00e0 Boundaries (ranh gi\u1edbi) v\u00e0 Anchors (m\u1ecf neo).<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Boundaries (ranh gi\u1edbi) v\u00e0 Anchors (m\u1ecf neo) l\u00e0 g\u00ec? Ch\u00fang l\u00e0m \u0111\u01b0\u1ee3c nh\u1eefng g\u00ec? C\u00f9ng kh\u00e1m ph\u00e1 l\u1ee3i \u00edch c\u1ee7a Anchors V\u00e0 Boundaries trong Regex.<\/span><\/p>\n<h2><strong>Anchors (M\u1ecf neo)<\/strong><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08171439\/regex-anchor-300x300.png\" alt=\"Anchors(m\u1ecf neo) - regex\" width=\"300\" height=\"300\" class=\"aligncenter wp-image-4077 size-medium\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08171439\/regex-anchor-300x300.png 300w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08171439\/regex-anchor-90x90.png 90w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08171439\/regex-anchor.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Khi nh\u1eafc \u0111\u1ebfn <strong>Anchors<\/strong> trong Regex, l\u00e0 nh\u1eafc \u0111\u1ebfn <span style=\"font-weight: 400;\">^ (Caret) v\u00e0 $ (Dollar sign).<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>^ (Caret)<\/strong>: \u0110\u1eb7t \u1edf \u0111\u1ea7u m\u1ed9t bi\u1ec3u th\u1ee9c regex, <strong>^<\/strong> bi\u1ec3u th\u1ecb r\u1eb1ng m\u1eabu c\u1ea7n kh\u1edbp ph\u1ea3i xu\u1ea5t hi\u1ec7n \u1edf \u0111\u1ea7u chu\u1ed7i. <\/span><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: bi\u1ec3u th\u1ee9c regex <span style=\"color: #008000;\">\/^Hello\/ <\/span>s\u1ebd kh\u1edbp v\u1edbi chu\u1ed7i <span style=\"color: #993300;\">&#8220;Hello world&#8221;<\/span> v\u00ec <span style=\"color: #993300;\">&#8220;Hello&#8221;<\/span> xu\u1ea5t hi\u1ec7n \u1edf \u0111\u1ea7u chu\u1ed7i. Nh\u01b0ng kh\u00f4ng kh\u1edbp v\u1edbi <span style=\"color: #993300;\">&#8220;I say: Hello&#8221;<\/span>, v\u00ec <span style=\"color: #993300;\">&#8220;I say: Hello&#8221;<\/span> kh\u00f4ng b\u1eaft \u0111\u1ea7u b\u1eb1ng <span style=\"color: #993300;\">&#8220;Hello&#8221;<\/span>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>$ (Dollar sign)<\/strong>: \u0110\u1eb7t \u1edf cu\u1ed1i m\u1ed9t bi\u1ec3u th\u1ee9c regex, <strong>$<\/strong> bi\u1ec3u th\u1ecb r\u1eb1ng m\u1eabu c\u1ea7n kh\u1edbp ph\u1ea3i xu\u1ea5t hi\u1ec7n \u1edf cu\u1ed1i chu\u1ed7i (<strong>ho\u1eb7c cu\u1ed1i 1 d\u00f2ng<\/strong>). V\u00ed d\u1ee5: Bi\u1ec3u th\u1ee9c regex <span style=\"color: #008000;\">\/cat$\/<\/span> s\u1ebd kh\u1edbp v\u1edbi chu\u1ed7i <span style=\"color: #993300;\">&#8220;the white cat&#8221;<\/span> v\u00ec <span style=\"color: #993300;\">&#8220;cat&#8221;<\/span> xu\u1ea5t hi\u1ec7n \u1edf cu\u1ed1i chu\u1ed7i. C\u0169ng nh\u01b0 v\u1edbi <span style=\"color: #000000;\"><strong>^ (Caret)<\/strong><\/span>, <span style=\"color: #993300;\">&#8220;The cat eats fish&#8221;<\/span> c\u00f3 k\u1ebft qu\u1ea3 kh\u00f4ng kh\u1edbp.<\/span><\/p>\n<p><em>Nh\u01b0 hai ph\u1ea7n m\u00f4 t\u1ea3 tr\u00ean th\u00ec \u0111i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 v\u1edbi <span style=\"font-weight: 400;\">^ (Caret) v\u00e0 $ (Dollar sign), n\u1ebfu ch\u00fang \u0111\u01b0\u1ee3c \u0111\u1eb7t \u1edf v\u1ecb tr\u00ed kh\u00e1c m\u00e0 kh\u00f4ng \u0111\u00fang v\u1edbi v\u1ecb tr\u00ed nh\u01b0 trong m\u00f4 t\u1ea3 th\u00ec m\u1eabu s\u1ebd kh\u00f4ng kh\u1edbp v\u1edbi b\u1eaft k\u1ef3 chu\u1ed7i n\u00e0o.<\/span><\/em><\/p>\n<h4><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng k\u1ebft h\u1ee3p c\u1ea3 hai.<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Tr\u01b0\u1eddng h\u1ee3p 1: Bi\u1ec3u th\u1ee9c regex (s\u1eed d\u1ee5ng c\u1ea3 hai Anchors) <span style=\"color: #008000;\">\/^\\d{3,10}$\/<\/span> kh\u1edbp v\u1edbi c\u00e1c chu\u1ed7i c\u00f3 t\u1eeb 3 \u0111\u1ebfn 10 ch\u1eef s\u1ed1.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;123456&#8221;<\/span> \/\/ kh\u1edbp v\u1edbi chu\u1ed7i n\u00e0y.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;A34567&#8221;<\/span> \/\/ kh\u00f4ng kh\u1edbp v\u00ec b\u1eaft \u0111\u1ea7u b\u1eb1ng k\u00fd t\u1ef1 &#8220;A&#8221;.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;3333 6666&#8221;<\/span> \/\/ kh\u00f4ng kh\u1edbp v\u00ec c\u00f3 kho\u1ea3ng tr\u1eafng \u1edf gi\u1eefa.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8221; 445566&#8243;<\/span> \/\/ kh\u00f4ng kh\u1edbp v\u00ec c\u00f3 kho\u1ea3ng tr\u1eafng \u1edf \u0111\u1ea7u.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;445566 &#8220;<\/span> \/\/ kh\u00f4ng kh\u1edbp v\u00ec c\u00f3 kho\u1ea3ng tr\u1eafng \u1edf cu\u1ed1i.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Tr\u01b0\u1eddng h\u1ee3p 2: Bi\u1ec3u th\u1ee9c regex <span style=\"color: #008000;\">\/^[a-z].{3,6}\\d$\/<\/span> kh\u1edbp v\u1edbi c\u00e1c chu\u1ed7i c\u00f3 c\u00e1c \u0111\u1eb7c \u0111i\u1ec3m sau:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">B\u1eaft \u0111\u1ea7u b\u1eb1ng m\u1ed9t k\u00fd t\u1ef1 ch\u1eef c\u00e1i th\u01b0\u1eddng t\u1eeb a \u0111\u1ebfn z (^[a-z]).<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Sau \u0111\u00f3 l\u00e0 m\u1ed9t chu\u1ed7i v\u1edbi b\u1ea5t k\u1ef3 k\u00fd t\u1ef1 n\u00e0o (bao g\u1ed3m c\u1ea3 k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t), c\u00f3 chi\u1ec1u d\u00e0i t\u1eeb 3 \u0111\u1ebfn 6 k\u00fd t\u1ef1 (.{3,6}).<\/span><\/li>\n<li><span style=\"font-weight: 400;\">K\u1ebft th\u00fac b\u1eb1ng m\u1ed9t ch\u1eef s\u1ed1 (\\d).<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 V\u00ed d\u1ee5:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;a12345 8&#8221;<\/span> \/\/ kh\u1edbp v\u1edbi chu\u1ed7i n\u00e0y.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;a\u00a0 \u00a0 8&#8221;<\/span> \/\/ kh\u1edbp v\u1edbi chu\u1ed7i n\u00e0y.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;A\u00a0 \u00a0 8&#8221;<\/span> \/\/ chu\u1ed7i kh\u00f4ng kh\u1edbp, v\u00ec b\u1eaft \u0111\u1ea7u v\u1edbi ch\u1eef c\u00e1i vi\u1ebft hoa.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;hello, Mai&#8221;<\/span>\u00a0\/\/ chu\u1ed7i kh\u00f4ng kh\u1edbp v\u00ec k\u1ebft th\u00fac chu\u1ed7i kh\u00f4ng ph\u1ea3i l\u00e0 ch\u1eef s\u1ed1.<\/span><\/li>\n<\/ul>\n<h4>M\u1ed9t \u0111i\u1ec1u c\u1ea7n ch\u00fa \u00fd v\u1edbi Anchors, c\u00f9ng xem v\u00ed d\u1ee5 sau \u0111\u1ec3 hi\u1ec3u th\u00eam:<\/h4>\n<p>Vd1: Bi\u1ec3u th\u1ee9c regex <span style=\"font-weight: 400;\"><span style=\"color: #008000;\">\/^abc$\/ <\/span>v\u1edbi c\u00e1c tr\u01b0\u1eddng h\u1ee3p:<\/span><\/p>\n<p><em>Tr\u01b0\u1eddng h\u1ee3p 1<\/em>: <span style=\"color: #993300;\">&#8220;abc abc abc&#8221;<\/span><\/p>\n<p><em>Tr\u01b0\u1eddng h\u1ee3p 2<\/em>: <span style=\"color: #993300;\">&#8220;abc abc <\/span><br \/>\n<span style=\"color: #993300;\">abc&#8221;<\/span><\/p>\n<p><em>Tr\u01b0\u1eddng h\u1ee3p 3<\/em>: <span style=\"color: #993300;\">&#8220;abc<\/span><br \/>\n<span style=\"color: #993300;\">abc <\/span><br \/>\n<span style=\"color: #993300;\">abc&#8221;<\/span><\/p>\n<p>C\u1ea7n ch\u00fa \u00fd m\u1ed7i khi <span style=\"color: #993300;\">abc<\/span> n\u1eb1m tr\u00ean d\u00f2ng m\u1edbi (newline character, k\u00fd hi\u1ec7u \\n ho\u1eb7c \\r\\n. Newline character \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 <strong>Non-Printable Characters<\/strong> (c\u00e1c k\u00fd t\u1ef1 kh\u00f4ng in \u0111\u01b0\u1ee3c), nh\u1eefng k\u00fd t\u1ef1 n\u00e0y kh\u00f4ng nh\u00ecn th\u1ea5y \u0111\u01b0\u1ee3c b\u1eb1ng m\u1eaft th\u01b0\u1eddng). C\u1ea9n th\u1eadn \u0111\u1ec3 tr\u00e1nh nh\u1eb1m l\u1eabn gi\u1eefa xu\u1ed1ng d\u00f2ng do m\u00e0n h\u00ecnh hi\u1ec3n th\u1ecb nh\u1ecf, v\u1edbi xu\u1ed1ng d\u00f2ng do newline character. C\u00f3 ngh\u0129a l\u00e0 tr\u00ean 1 d\u00f2ng ch\u1ec9 c\u00f3 duy nh\u1ea5t <span style=\"color: #993300;\">abc\u00a0<span style=\"color: #000000;\">m\u00e0 kh\u00f4ng c\u00f3 b\u1ea5t k\u1ef3 k\u00ed t\u1ef1 n\u00e0o kh\u00e1c th\u00ec <span style=\"color: #993300;\">abc\u00a0<span style=\"color: #000000;\">s\u1ebd kh\u1edbp v\u1edbi m\u1eabu(**).<\/span><\/span><\/span><\/span><\/p>\n<p>H\u00e3y th\u1eed v\u00e0o link <a href=\"https:\/\/regex101.com\/r\/OjC1nF\/1\" target=\"_blank\" rel=\"noopener\">https:\/\/regex101.com\/r\/OjC1nF\/1<\/a> \u0111\u1ec3 xem c\u00e1c k\u1ebft qu\u1ea3 c\u1ee7a v\u00ed d\u1ee5 tr\u00ean.<\/p>\n<p>V\u1eady l\u00e0 \u0111\u00e3 t\u00ecm hi\u1ec3u v\u1ec1 <span style=\"font-weight: 400;\">Anchors (m\u1ecf neo), ti\u1ebfp theo h\u00e3y c\u00f9ng t\u00ecm hi\u1ec3u v\u1ec1 Boundaries (ranh gi\u1edbi) trong ph\u1ea7n b\u00ean d\u01b0\u1edbi.<\/span><\/p>\n<h2><strong>Boundaries (ranh gi\u1edbi)<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Tr\u01b0\u1edbc khi t\u00ecm hi\u1ec3u v\u1ec1 Boundaries, h\u00e3y c\u00f9ng nhau l\u00e0m r\u00f5 kh\u00e1i ni\u1ec7m v\u1ec1 \u201cword\u201d v\u00e0 \u201cnon-word\u201d:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">&#8220;<strong>Word<\/strong>&#8221; trong regex \u0111\u01b0\u1ee3c hi\u1ec3u l\u00e0 nh\u1eefng k\u00fd t\u1ef1 ch\u1eef c\u00e1i (a-z, A-Z), ch\u1eef s\u1ed1 (0-9), ho\u1eb7c d\u1ea5u g\u1ea1ch d\u01b0\u1edbi (_). Bi\u1ec3u th\u1ecb ng\u1eafn g\u1ecdn v\u1edbi short class \\w hay [a-zA-Z0-9_].<\/span>\n<ul><\/ul>\n<\/li>\n<li><span style=\"font-weight: 400;\">&#8220;<strong>Non-word<\/strong>&#8221; bao g\u1ed3m c\u00e1c k\u00fd t\u1ef1 kh\u00f4ng ph\u1ea3i l\u00e0 ch\u1eef c\u00e1i, s\u1ed1 ho\u1eb7c d\u1ea5u g\u1ea1ch d\u01b0\u1edbi, nh\u01b0 d\u1ea5u c\u00e1ch(space), d\u1ea5u ch\u1ea5m, d\u1ea5u ph\u1ea9y, v\u00e0 nh\u1eefng k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t ( @ # $ % ^ &amp; * ). Bi\u1ec3u th\u1ecb ng\u1eafn g\u1ecdn v\u1edbi short class \\W hay [^\\w].<\/span><\/li>\n<\/ul>\n<p>Trong <span style=\"font-weight: 400;\">Boundaries c\u00f3 hai kh\u00e1i ni\u1ec7m m\u1ed9t l\u00e0 Word Boundary (k\u00fd hi\u1ec7u \\b), hai l\u00e0 Not-word-boundary (k\u00fd hi\u1ec7u \\B)<\/span><\/p>\n<h3><strong>Word Boundary (k\u00fd hi\u1ec7u \\b)<\/strong><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08174228\/word-boundary-1-196x300.png\" alt=\"Word Boundary ( \\b )\" width=\"196\" height=\"300\" class=\"aligncenter wp-image-4079 size-medium\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08174228\/word-boundary-1-196x300.png 196w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08174228\/word-boundary-1.png 400w\" sizes=\"auto, (max-width: 196px) 100vw, 196px\" \/><\/p>\n<p>V\u1edbi word-boundary s\u1ebd kh\u1edbp c\u00e1c<span style=\"font-weight: 400;\"> v\u1ecb tr\u00ed v\u1edbi m\u1ed9t b\u00ean l\u00e0 <strong>word<\/strong> v\u00e0 m\u1ed9t b\u00ean l\u00e0 <strong>non-word<\/strong>. C\u00f9ng xem hai v\u00ed d\u1ee5 b\u00ean d\u01b0\u1edbi \u0111\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n.<\/span><\/p>\n<p>V\u00ed d\u1ee5 1: v\u1edbi m\u1eabu <span style=\"font-weight: 400;\">regex<\/span> <span style=\"font-weight: 400; color: #008000;\">\/\\b\/<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;abc def&#8221;<\/span>\u00a0\/\/ kh\u1edbp 4 v\u1ecb tr\u00ed (ch\u00fa \u00fd v\u00e0o d\u1ea5u <span style=\"color: #ff00ff;\">| <span style=\"color: #000000;\">bi\u1ec3u th\u1ecb cho v\u1ecb tr\u00ed so kh\u1edbp)<\/span><\/span>, 1 tr\u01b0\u1edbc a, 2 sau c, 3 tr\u01b0\u1edbc d, cu\u1ed1i c\u00f9ng l\u00e0 sau f (<span style=\"color: #000000;\"><span style=\"color: #ff00ff;\">|<\/span>abc<span style=\"color: #ff00ff;\">|<\/span> <span style=\"color: #ff00ff;\">|<\/span>def<span style=\"color: #ff00ff;\">|<\/span><\/span>).<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;abcdef&#8221;<\/span>\u00a0\/\/ kh\u1edbp (<span style=\"color: #ff00ff;\">|<\/span>abcdef<span style=\"color: #ff00ff;\">|<\/span>)<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;$$$&#8221; <span style=\"color: #000000;\">\/\/ kh\u00f4ng c\u00f3 v\u1ecb tr\u00ed n\u00e0o kh\u1edbp<\/span><\/span><\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;$fff&#8221; <span style=\"color: #000000;\">\/\/ kh\u1edbp ($<span style=\"color: #ff00ff;\">|<\/span>fff<span style=\"color: #ff00ff;\">|<\/span>)<\/span><\/span><\/span><\/li>\n<\/ul>\n<p>V\u00ed d\u1ee5 2: v\u1edbi m\u1eabu <span style=\"font-weight: 400;\">regex<\/span> <span style=\"color: #008000;\">\/\\ba\/<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;aaa&#8221; <\/span><span style=\"color: #993300;\"><span style=\"color: #000000;\">\/\/ kh\u1edbp v\u1edbi ch\u1eef a \u0111\u1ea7u ti\u00ean (<span style=\"color: #33cccc;\">a<\/span>aa).<\/span><\/span><\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;ba&#8221; <span style=\"color: #000000;\">\/\/ kh\u00f4ng kh\u1edbp v\u00ec tr\u01b0\u1edbc &#8220;a&#8221; kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t non-word.<\/span><\/span><\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;a a&#8221; <span style=\"color: #000000;\">\/\/ kh\u1edbp, k\u1ebft qu\u1ea3 t\u00ecm th\u1ea5y 2 ch\u1eef a (<span style=\"color: #33cccc;\">a a<\/span>).<\/span><\/span><\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;ban an&#8221; <span style=\"color: #000000;\">\/\/ kh\u1edbp v\u1edbi a trong &#8220;an&#8221; (ban <span style=\"color: #33cccc;\">a<\/span>n).<\/span><\/span><\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;trai na&#8221; <span style=\"color: #000000;\">\/\/\u00a0 kh\u00f4ng kh\u1edbp.<\/span><\/span><\/span><\/li>\n<\/ul>\n<p>V\u00ed d\u1ee5 3: v\u1edbi m\u1eabu regex <span style=\"color: #008000;\">\/\\b@\/<\/span><\/p>\n<ul>\n<li><span style=\"color: #993300;\">&#8220;aa@aa#@#&#8221;<\/span> \/\/ k\u1ebft qu\u1ea3 k\u00fd t\u1ef1 &#8220;@&#8221; \u0111\u1ea7u ti\u00ean s\u1ebd ph\u00f9 h\u1ee3p (aa<span style=\"color: #33cccc;\">@<\/span>aa#@#).<\/li>\n<\/ul>\n<h3><strong>Not-word-boundary (k\u00fd hi\u1ec7u \\B)<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Ng\u01b0\u1ee3c l\u1ea1i v\u1edbi <strong>\\b (word boundary)<\/strong>. <strong>\\B (<\/strong><\/span><strong>Not-word-boundary) <\/strong>s\u1ebd kh\u1edbp c\u00e1c v\u1ecb tr\u00ed th\u1ecfa 1 trong 2 \u0111i\u1ec1u ki\u1ec7n sau:<\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">C\u1ea3 2 b\u00ean \u0111\u1ec1u l\u00e0 word:<\/span>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;abc&#8221;<\/span>\u00a0\/\/ kh\u1edbp th\u00ec v\u1ecb tr\u00ed kh\u1edbp c\u1ee7a n\u00f3 s\u1ebd l\u00e0 tr\u01b0\u1edbc v\u00e0 sau b (a<span style=\"color: #ff00ff;\">|<\/span>b<span style=\"color: #ff00ff;\">|<\/span>c).<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;Abcd&#8221;<\/span>\u00a0\/\/ k\u1ebft qu\u1ea3 v\u1ecb tr\u00ed kh\u1edbp s\u1ebd l\u00e0 tr\u01b0\u1edbc b, tr\u01b0\u1edbc c v\u00e0 tr\u01b0\u1edbc d (A<span style=\"color: #ff00ff;\">|<\/span>b<span style=\"color: #ff00ff;\">|<\/span>c<span style=\"color: #ff00ff;\">|<\/span>d).<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-weight: 400;\">C\u1ea3 2 b\u00ean \u0111\u1ec1u l\u00e0 non-word:<\/span>\n<ul>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;%&#8221;<\/span>\u00a0k\u1ebft qu\u1ea3 s\u1ebd l\u00e0 tr\u01b0\u1edbc v\u00e0 sau % (<span style=\"color: #ff00ff;\">|<\/span>%<span style=\"color: #ff00ff;\">|<\/span>).<\/span><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"color: #993300;\">&#8220;a%%a&#8221;<\/span>\u00a0v\u1ecb tr\u00ed kh\u1edbp s\u1ebd n\u1eb1m gi\u1eefa hai % (a%<span style=\"color: #ff00ff;\">|<\/span>%a).<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none; text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08185843\/not-word-boundary-1-196x300.png\" alt=\"Not-word-boundary \\B\" width=\"196\" height=\"300\" class=\"alignnone wp-image-4083 size-medium\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08185843\/not-word-boundary-1-196x300.png 196w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2024\/07\/08185843\/not-word-boundary-1.png 400w\" sizes=\"auto, (max-width: 196px) 100vw, 196px\" \/><\/li>\n<\/ul>\n<h3><strong>\u0110i\u1ec3m kh\u00e1c nhau gi\u1eefa Boundaries v\u00e0 Anchors<\/strong><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Anchors: Ch\u1ec9 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u1edf v\u1ecb tr\u00ed \u0111\u1ea7u ho\u1eb7c cu\u1ed1i c\u1ee7a chu\u1ed7i tr\u00ean m\u1ed9t d\u00f2ng, x\u00e1c \u0111\u1ecbnh v\u1ecb tr\u00ed tuy\u1ec7t \u0111\u1ed1i trong chu\u1ed7i.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Boundaries: C\u00f3 th\u1ec3 \u1edf b\u1ea5t k\u1ef3 v\u1ecb tr\u00ed n\u00e0o trong chu\u1ed7i m\u00e0 th\u1ecfa \u0111i\u1ec1u ki\u1ec7n c\u1ee7a <strong>Boundaries (ranh gi\u1edbi)<\/strong> b\u00ean tr\u00ean<\/span><\/span><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<p><strong>M\u1ed9t v\u00e0i ch\u1ee7 \u00fd nh\u1ecf:<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Khi d\u00f9ng ^ (Caret), n\u1ebfu d\u1ea5u ^ \u0111\u01b0\u1ee3c \u0111\u1eb7t trong c\u1eb7p d\u1ea5u ngo\u1eb7c vu\u00f4ng [^a-z] th\u00ec n\u00f3 s\u1ebd c\u00f3 ngh\u0129a l\u00e0 ph\u1ee7 \u0111\u1ecbnh l\u1ea1i nh\u1eefng gi\u00e1 tr\u1ecb \u0111\u1ee9ng sau n\u00f3. V\u00ed d\u1ee5, [^a-z] c\u00f3 ngh\u0129a l\u00e0 s\u1ebd b\u1ecf qua h\u1ebft c\u00e1c k\u00fd t\u1ef1 th\u01b0\u1eddng t\u1eeb a \u0111\u1ebfn z.<\/span><\/p>\n<p>\u0110\u1ec3 xem k\u1ebft qu\u1ea3 c\u1ee7a nh\u1eefng v\u00ed d\u1ee5 b\u00ean tr\u00ean h\u00e3y c<span style=\"font-weight: 400;\">opy c\u00e1c m\u1eabu v\u00e0 chu\u1ed7i trong c\u00e1c v\u00ed d\u1ee5 (khi copy c\u00e1c m\u1eabu b\u1ea1n n\u00ean b\u1ecf d\u1ea5u <strong><span style=\"color: #339966;\">\/<\/span><\/strong> \u1edf \u0111\u1ea7u v\u00e0 cu\u1ed1i, \u0111\u1ed1i v\u1edbi chu\u1ed7i th\u00ec b\u1ecf qua <span style=\"color: #993300;\">&#8220;<\/span>), truy c\u1eadp v\u00e0o \u0111\u01b0\u1eddng link <a href=\"https:\/\/regex101.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/regex101.com\/<\/a> \u0111\u1ec3 xem k\u1ebft qu\u1ea3(<\/span>**). Cu\u1ed1i c\u00f9ng, h<span style=\"font-weight: 400;\">y v\u1ecdng b\u00e0i vi\u1ebft n\u00e0y gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 s\u1ef1 kh\u00e1c nhau gi\u1eefa Boundaries v\u00e0 Anchors trong regex v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng ch\u00fang hi\u1ec7u qu\u1ea3.<\/span><\/p>\n<p><span style=\"color: #993300;\"><span style=\"color: #000000;\">(**): <span style=\"font-weight: 400;\">L\u01b0u \u00fd r\u1eb1ng k\u1ebft qu\u1ea3 c\u00f3 th\u1ec3 kh\u00e1c bi\u1ec7t \u0111\u00f4i ch\u00fat, ph\u1ee5 thu\u1ed9c v\u00e0o <\/span>REGEX FLAGS m\u00e0 b\u1ea1n ch\u1ecdn (<\/span><\/span>trong b\u00e0i vi\u1ebft n\u00e0y m\u00ecnh ch\u1ecdn regex flags l\u00e0 <span style=\"color: #339966;\">gm<span style=\"color: #000000;\">)<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ngu\u1ed3n tham kh\u1ea3o:\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.regular-expressions.info\/anchors.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.regular-expressions.info\/anchors.html<\/a><\/p>\n<p><a href=\"https:\/\/www.rexegg.com\/regex-anchors.php\" target=\"_blank\" rel=\"noopener\">https:\/\/www.rexegg.com\/regex-anchors.php<\/a><\/p>\n<p>&nbsp;<\/p>\n<ol><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Boundaries v\u00e0 Anchors<\/p>\n","protected":false},"author":37,"featured_media":4081,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4069","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts\/4069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/comments?post=4069"}],"version-history":[{"count":0,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts\/4069\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/media\/4081"}],"wp:attachment":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/media?parent=4069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/categories?post=4069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/tags?post=4069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}