Regex гэж юу вэ?
Regular Expression (энгийн томъёолол, тогтмол илэрхийлэл)
Хэрэглэгчийн оруулсан мэдээллийг зөв эсэхийг шалгахын тулд Regular Expression-ийг ашигладаг. Жишээ нь зөвхөн кирилл үсэг, тоо агуулсан эсэх гэх мэт…
Програмчлалын хэлнүүдээс хамаарч regex-үүд өөр өөр бичиглэлтэй байдаг. Доорх жишээн дээр Dart хэл дээр утасны дугаар зөв форматын дагуу байгаа эсэхийг шалгав.
String value = "+976-99887766";
String pattern = r"(^(?:[+-]976-)?[0-9]{8,10}$)";
RegExp regExp = new RegExp(pattern);
print(regExp.hasMatch(value)); //Утасны дугаар зөв эсэх
- r (raw string) нь ‘\’ (backslash) тэмдэгтийг ердийн тэмдэгт гэж ялгах боломжийг олгодог. Жишээ нь “\n”-ийг мөр шилжих биш ‘\’, ’n’ гэсэн тусдаа хоёр тэмдэгт гэж үзнэ.
- ^ - Эхлэл.
- (?:[+-]976-)? нь ‘+’, ‘-’ тэмдэгтүүдийн аль нэгээр эхэлж, араасаа “976-” залгасан утгыг илэрхийлнэ.
- [0–9]{8,10} нь 8–10 ширхэг цифр
- $ - Төгсгөл
Доорх жишээнд НӨАТ төлөгчийн дугаар зөв эсэхийг шалгав.
String value = "Аё12345678";
String pattern = r"(^\d{7,12}|[а-яА-ЯёЁөӨүҮ]{2}\d{8}$)";
RegExp regExp = new RegExp(pattern);
print(regExp.hasMatch(value)); //НӨАТ төлөгчийн дугаар зөв эсэх
- \d{7,12} нь 7–12 ширхэг цифрүүд
- | (vertical bar) нь эсвэл гэсэн утгыг илэхийлнэ. Жишээ нь gray|grey “gray” or “grey”.
- [а-яА-ЯёЁөӨүҮ]{2} нь 2 урттай цагаан толгойн үсгүүд
- \d{8} 8 урттай цифрүүд
Regular Expression-д түгээмэл ашиглагддаг тэмдэгтүүдээс дурдвал…
- ? - Optional буюу утгатай, утгагүй аль алиныг нь зөвшөөрнө. Жишээ нь colou?r-ын хувьд “color”, “colour” хоёулаа зөвшөөрөгдөнө.
- * - The asterisk indicates zero or more occurrences of the preceding element. For example, ab*c matches “ac”, “abc”, “abbc”, “abbbc”, and so on.
- + - The plus sign indicates one or more occurrences of the preceding element. For example, ab+c matches “abc”, “abbc”, “abbbc”, and so on, but not “ac”.
- {n} - The preceding item is matched exactly n times.
- {min,} - The preceding item is matched min or more times.
- {min,max} - The preceding item is matched at least min times, but not more than max times.
Regular Expression-ийн талаар цааш дэлгэрүүлэн үзэх:
- Regular expression: https://en.wikipedia.org/wiki/Regular_expression
- JavaScript Regular Expression-ийн тухай: https://ecma-international.org/ecma-262/9.0/#sec-regexp-regular-expression-objects
- Raw string: https://www.educative.io/edpresso/how-to-create-a-raw-string-in-dart