តារាងសង្ខេប Regex និងឧបករណ៍បង្ហាញរូបភាព

រៀននិមិត្តសញ្ញានៃកន្សោមទៀងទាត់យ៉ាងរហ័ស បំបែកលំនាំមួយទៅជាផ្នែកៗដែលងាយយល់ ហើយសាកល្បងលើអត្ថបទរបស់អ្នកផ្ទាល់។ អ្វីៗទាំងអស់ដំណើរការក្នុងកម្មវិធីរុករករបស់អ្នក។

/
/
បិទភ្ជាប់កន្សោមទៀងទាត់ដើម្បីមើលការពន្យល់ជាផ្នែកៗ។
ទង់
ផ្នែកនានា
វាយលំនាំនៅខាងលើដើម្បីមើលផ្នែកនានារបស់វា។

ជាជម្រើស។ វាយ ឬបិទភ្ជាប់អត្ថបទ ហើយចំណុចដែលត្រូវគ្នានឹងលេចឡើងពេលអ្នកវាយ។

តារាងសង្ខេប


. តួអក្សរណាមួយ លើកលែងតែការចុះបន្ទាត់ ឧទាហរណ៍៖ a.c
\d តួលេខ (0-9) ឧទាហរណ៍៖ \d+
\D តួអក្សរណាមួយដែលមិនមែនជាតួលេខ ឧទាហរណ៍៖ \D+
\w តួអក្សរនៃពាក្យ (a-z, A-Z, 0-9, _) ឧទាហរណ៍៖ \w+
\W តួអក្សរណាមួយដែលមិនមែនជាតួអក្សរនៃពាក្យ ឧទាហរណ៍៖ \W+
\s តួអក្សរចន្លោះ ឧទាហរណ៍៖ \s+
\S តួអក្សរណាមួយដែលមិនមែនជាចន្លោះ ឧទាហរណ៍៖ \S+
^ ដើមអត្ថបទ ឧទាហរណ៍៖ ^hello
$ ចុងអត្ថបទ ឧទាហរណ៍៖ world$
\b ព្រំដែននៃពាក្យ ឧទាហរណ៍៖ \bword\b
\B ទីតាំងដែលមិនមែនជាព្រំដែននៃពាក្យ ឧទាហរណ៍៖ \Bword\B
[abc] សំណុំតួអក្សរ ឧទាហរណ៍៖ [abc]+
[^abc] សំណុំបដិសេធ ឧទាហរណ៍៖ [^abc]+
[a-z] សំណុំតួអក្សរ ឧទាហរណ៍៖ [a-z0-9]+
(abc) ក្រុមចាប់យក ឧទាហរណ៍៖ (abc)
(?:abc) ក្រុមដែលមិនចាប់យក ឧទាហរណ៍៖ (?:abc)+
(?<n>) ក្រុមមានឈ្មោះ ឧទាហរណ៍៖ (?<year>\d{4})
\1 ការយោងថយក្រោយ ឧទាហរណ៍៖ (\w)\1
a|b ជម្រើស ឧទាហរណ៍៖ cat|dog
? ជាជម្រើស (0 ឬ 1) ឧទាហរណ៍៖ colou?r
* ធ្វើម្តងទៀត 0 ដងឡើងទៅ ឧទាហរណ៍៖ a*
+ ធ្វើម្តងទៀត 1 ដងឡើងទៅ ឧទាហរណ៍៖ a+
{m,n} ធ្វើម្តងទៀតតាមចំនួនដងដែលកំណត់ ឧទាហរណ៍៖ a{2,4}
+? ដូចគ្នា ប៉ុន្តែខ្លីបំផុតតាមដែលអាចធ្វើបាន ឧទាហរណ៍៖ <.+?>
(?=) តែនៅពេលដែលមានអ្វីខាងក្រោមតាមពីក្រោយ ឧទាហរណ៍៖ foo(?=bar)
(?!) តែនៅពេលដែលមិនមានអ្វីខាងក្រោមតាមពីក្រោយ ឧទាហរណ៍៖ foo(?!bar)
(?<=) តែនៅពេលដែលមានអ្វីខាងក្រោមនៅពីមុខ ឧទាហរណ៍៖ (?<=\$)\d+
(?<!) តែនៅពេលដែលមិនមានអ្វីខាងក្រោមនៅពីមុខ ឧទាហរណ៍៖ (?<!\$)\d+
\. ចាត់ទុកតួអក្សរបន្ទាប់ជាតួអក្សរធម្មតា ឧទាហរណ៍៖ 3\.14
\n ការចុះបន្ទាត់ ឧទាហរណ៍៖ line\n
\t ថេប ឧទាហរណ៍៖ \tindented

លំនាំផ្ទៀងផ្ទាត់ទូទៅ


ការប្រើប្រាស់លំនាំការពិពណ៌នាឧទាហរណ៍ដែលត្រូវគ្នា
អាសយដ្ឋានអ៊ីមែល^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$ពិនិត្យរូបរាងធម្មតានៃអាសយដ្ឋានអ៊ីមែល។user@example.com
លេខទូរស័ព្ទ (សហរដ្ឋអាមេរិក)^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ត្រូវនឹងលេខដប់ខ្ទង់ ទោះមាន ឬគ្មានសញ្ញាដក ចន្លោះ ឬវង់ក្រចក។123-456-7890
លេខកូដប្រៃសណីយ៍ (សហរដ្ឋអាមេរិក)^\d{5}(-\d{4})?$ត្រូវនឹងលេខកូដប្រៃសណីយ៍ប្រាំខ្ទង់ និងប្រាំបួនខ្ទង់។90210-1234
កាលបរិច្ឆេទ (YYYY-MM-DD)^\d{4}-\d{2}-\d{2}$ត្រូវនឹងទម្រង់កាលបរិច្ឆេទជាលេខសាមញ្ញ។2026-09-16
អាសយដ្ឋាន IP (IPv4)^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ត្រូវនឹងរូបរាងនៃអាសយដ្ឋាន IPv4 ដោយមិនពិនិត្យថាផ្នែកនីមួយៗស្ថិតចន្លោះ 0 ដល់ 255 ឬអត់។192.168.1.1

លំនាំទាំងនេះពិនិត្យរូបរាងនៃតម្លៃមួយ មិនមែនថាតើវាមានពិតឬអត់ទេ។ អាសយដ្ឋានមួយអាចត្រូវនឹងលំនាំអ៊ីមែលយ៉ាងល្អឥតខ្ចោះ តែនៅតែផ្ញើមិនដល់។ ដូច្នេះសូមប្រើវាដើម្បីចាប់កំហុសវាយអក្សរតាំងពីដំបូង កុំប្រើជាការផ្ទៀងផ្ទាត់តែមួយគត់ឡើយ។

អ្វីដែលឧបករណ៍នេះផ្តល់ជូន


ឯកសារយោងខ្លីៗនៃនិមិត្តសញ្ញាកន្សោមទៀងទាត់ ការបំបែកដែលប្រែក្លាយលំនាំទៅជាប្រយោគធម្មតា និងកន្លែងសាកល្បងដែលបង្ហាញថាអ្វីខ្លះត្រូវគ្នាក្នុងអត្ថបទរបស់អ្នកផ្ទាល់។

ពេលណាគួរប្រើ


ប្រើពេលអ្នកកំពុងសរសេរលំនាំ ពេលអានលំនាំរបស់អ្នកដទៃ ឬពេលពន្យល់មូលដ្ឋាន regex ដល់មិត្តរួមការងារ។ ការអានលំនាំឮៗម្តងមួយផ្នែក ជាទូទៅគឺជាអ្វីដែលធ្វើឱ្យយល់ច្បាស់។

ដែនកំណត់


ការបំបែកធ្វើតាមកន្សោមទៀងទាត់របស់ JavaScript ព្រោះនោះជាអ្វីដែលកម្មវិធីរុករករបស់អ្នកដំណើរការ។ គ្រាមភាសាផ្សេងទៀតខុសគ្នា៖ PCRE, Python, Java និង .NET បន្ថែមវាក្យសម្ពន្ធផ្ទាល់ខ្លួន ហើយឧបករណ៍ POSIX ដូចជា grep និង sed ប្រើវាក្យសម្ពន្ធចាស់ជាង និងតូចជាង។ កន្លែងសាកល្បងដំណើរការលំនាំរបស់អ្នកក្នុងខ្សែស្រឡាយដាច់ដោយឡែក ហើយបញ្ឈប់វាបន្ទាប់ពីប៉ុន្មានវិនាទី ដូច្នេះលំនាំដែលថយក្រោយគ្មានទីបញ្ចប់មិនអាចធ្វើឱ្យទំព័រកក។

របៀបប្រើតារាងសង្ខេប


ស្វែងរកនិមិត្តសញ្ញា ឬបិទភ្ជាប់លំនាំហើយអានម្តងមួយផ្នែក។

  1. រុករក ឬស្វែងរកក្នុងបញ្ជីនិមិត្តសញ្ញា។
  2. បិទភ្ជាប់លំនាំដើម្បីមើលវាបែងចែកជាផ្នែកៗ។
  3. វាយអត្ថបទគំរូដើម្បីមើលថាអ្វីខ្លះត្រូវគ្នាពិតប្រាកដ រួចកែលំនាំ។

សំណួរដែលសួរញឹកញាប់


តើឧបករណ៍នេះផ្ញើលំនាំរបស់ខ្ញុំទៅកន្លែងណាទេ?
ទេ។ ទាំងការបំបែក និងការស្វែងរកចំណុចត្រូវគ្នា ដំណើរការក្នុងកម្មវិធីរុករករបស់អ្នក ហើយទាំងលំនាំ ទាំងអត្ថបទ មិនត្រូវបានផ្ញើទៅកន្លែងណាឡើយ។

តើវាធ្វើតាមគ្រាមភាសា regex ណា?
គ្រាមភាសារបស់ JavaScript ព្រោះនោះជាម៉ាស៊ីនដែលធ្វើការងារ។ អ្វីដែលមាននៅទីនេះភាគច្រើន — ថ្នាក់តួអក្សរ ក្រុម កត្តាបរិមាណ យុថ្កា — ដូចគ្នាក្នុងគ្រប់គ្រាមភាសា។

តើខ្ញុំអាចសាកល្បងលំនាំរបស់ខ្ញុំនៅទីនេះបានទេ?
បាន។ វាយអត្ថបទក្នុងប្រអប់សាកល្បង ហើយចំណុចដែលត្រូវគ្នានឹងត្រូវបានបន្លិច ព្រមទាំងបញ្ជីក្រុមដែលចាប់យកបានសម្រាប់ចំណុចនីមួយៗ។

ហេតុអ្វីបានជាលំនាំរបស់ខ្ញុំត្រូវបានបញ្ឈប់?
លំនាំខ្លះប្រើពេលវេលាជាអិចស្ប៉ូណង់ស្យែលលើអត្ថបទដែលស្ទើរតែត្រូវគ្នា — មូលហេតុធម្មតាគឺកត្តាបរិមាណនៅក្នុងកត្តាបរិមាណមួយទៀត ដូចជា (a+)+b។ កន្លែងសាកល្បងបោះបង់បន្ទាប់ពីប៉ុន្មានវិនាទី ជំនួសឱ្យការធ្វើឱ្យទំព័រកក ហើយការបញ្ឈប់នោះខ្លួនឯងជាការព្រមានមានប្រយោជន៍៖ លំនាំដដែលនេះនឹងធ្វើឱ្យម៉ាស៊ីនបម្រើឈប់ដំណើរការ។

Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking