Regular Expression гэж юу вэ?

Jagaa
2 min readApr 13, 2020

--

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-ийн талаар цааш дэлгэрүүлэн үзэх:

--

--

Jagaa
Jagaa

Written by Jagaa

Programmer and reader. Road to 1000 posts.

No responses yet