តារាងសង្ខេប 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)\1a|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 ប្រើវាក្យសម្ពន្ធចាស់ជាង និងតូចជាង។ កន្លែងសាកល្បងដំណើរការលំនាំរបស់អ្នកក្នុងខ្សែស្រឡាយដាច់ដោយឡែក ហើយបញ្ឈប់វាបន្ទាប់ពីប៉ុន្មានវិនាទី ដូច្នេះលំនាំដែលថយក្រោយគ្មានទីបញ្ចប់មិនអាចធ្វើឱ្យទំព័រកក។
របៀបប្រើតារាងសង្ខេប
ស្វែងរកនិមិត្តសញ្ញា ឬបិទភ្ជាប់លំនាំហើយអានម្តងមួយផ្នែក។
- រុករក ឬស្វែងរកក្នុងបញ្ជីនិមិត្តសញ្ញា។
- បិទភ្ជាប់លំនាំដើម្បីមើលវាបែងចែកជាផ្នែកៗ។
- វាយអត្ថបទគំរូដើម្បីមើលថាអ្វីខ្លះត្រូវគ្នាពិតប្រាកដ រួចកែលំនាំ។
សំណួរដែលសួរញឹកញាប់
តើឧបករណ៍នេះផ្ញើលំនាំរបស់ខ្ញុំទៅកន្លែងណាទេ?
ទេ។ ទាំងការបំបែក និងការស្វែងរកចំណុចត្រូវគ្នា ដំណើរការក្នុងកម្មវិធីរុករករបស់អ្នក ហើយទាំងលំនាំ ទាំងអត្ថបទ មិនត្រូវបានផ្ញើទៅកន្លែងណាឡើយ។
តើវាធ្វើតាមគ្រាមភាសា regex ណា?
គ្រាមភាសារបស់ JavaScript ព្រោះនោះជាម៉ាស៊ីនដែលធ្វើការងារ។ អ្វីដែលមាននៅទីនេះភាគច្រើន — ថ្នាក់តួអក្សរ ក្រុម កត្តាបរិមាណ យុថ្កា — ដូចគ្នាក្នុងគ្រប់គ្រាមភាសា។
តើខ្ញុំអាចសាកល្បងលំនាំរបស់ខ្ញុំនៅទីនេះបានទេ?
បាន។ វាយអត្ថបទក្នុងប្រអប់សាកល្បង ហើយចំណុចដែលត្រូវគ្នានឹងត្រូវបានបន្លិច ព្រមទាំងបញ្ជីក្រុមដែលចាប់យកបានសម្រាប់ចំណុចនីមួយៗ។
ហេតុអ្វីបានជាលំនាំរបស់ខ្ញុំត្រូវបានបញ្ឈប់?
លំនាំខ្លះប្រើពេលវេលាជាអិចស្ប៉ូណង់ស្យែលលើអត្ថបទដែលស្ទើរតែត្រូវគ្នា — មូលហេតុធម្មតាគឺកត្តាបរិមាណនៅក្នុងកត្តាបរិមាណមួយទៀត ដូចជា (a+)+b។ កន្លែងសាកល្បងបោះបង់បន្ទាប់ពីប៉ុន្មានវិនាទី ជំនួសឱ្យការធ្វើឱ្យទំព័រកក ហើយការបញ្ឈប់នោះខ្លួនឯងជាការព្រមានមានប្រយោជន៍៖ លំនាំដដែលនេះនឹងធ្វើឱ្យម៉ាស៊ីនបម្រើឈប់ដំណើរការ។
Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking