1 Востаннє редагувалося Betterthanyou (18.02.2020 17:56:52)

Тема: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Потрібно написати регулярний вираз який буде перевіряти чи введене збігається із зразком.

Наприклад: є рядок

ABC

Цей рядок є зразком

коли я починаю вводити те саме - це збіг рядків, в іншому випадку перевірка не пройдена.

A - TRUE
AB - TRUE
ABF - FALSE
ABC - TRUE
ABCD - FALSE

Я написав регулярний вираз, і він працює

/^ABC$|^AB$|^A$/gm.test("ABC")

Моє запитання: можна його спростити ?

Якщо потрібно перевірити три символи то цей код згодиться. Що робити якщо мені потрібно так перевірити 15+ символів ?

2 Востаннє редагувалося P.Y. (18.02.2020 17:36:56)

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Робити це регуляркою — обов'язкова умова? Просто навіть без неї можна виріза́ти початок зразка потрібної довжини й порівнювяти з рядком, що вводиться.

Подякували: leofun01, Betterthanyou2

3

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Betterthanyou написав:

можна його спростити ?

/^(A(B(C?)?)?)?$/gm
Betterthanyou написав:

Що робити якщо мені потрібно так перевірити 15+ символів ?

Самими регулярками тут не обійдеться.

Подякували: Betterthanyou, P.Y.2

4 Востаннє редагувалося dot (18.02.2020 18:23:15)

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Прѡ всьак ꙁаꙋважꙋ, жє ꙁамѣсть спѡ̂впадатн красшє пнсатн ꙁбѣгатн сьа.

Шчѡ мајєтє ɴа ꙋваꙁѣ 15+ снмбѡлѡ̂в?

Подякували: Betterthanyou1

5

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

leofun01 написав:
Betterthanyou написав:

можна його спростити ?

/^(A(B(C?)?)?)?$/gm
Betterthanyou написав:

Що робити якщо мені потрібно так перевірити 15+ символів ?

Самими регулярками тут не обійдеться.

Проте, регулярку можна генерувати на основі текстового зразка. Це якщо вона йде кудись, де перевірка робиться виключно регулярками.

Подякували: leofun01, Betterthanyou2

6

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Так навпаки ж. У вас є стрічка 'ABC', треба перевірити, чи довільна стрічка S є її початком? Шукайте не 'ABC' в S, а S в ABC, тільки заекрануйте все, крім літер і цифр, і додайте ^.

Подякували: leofun01, Betterthanyou2

7 Востаннє редагувалося P.Y. (18.02.2020 18:05:54)

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

koala написав:

Так навпаки ж. У вас є стрічка 'ABC', треба перевірити, чи довільна стрічка S є її початком? Шукайте не 'ABC' в S, а S в ABC, тільки заекрануйте все, крім літер і цифр, і додайте ^.

Генерувати регулярку на основі довільного рядка S (котрий, очевидно, береться з поля вводу при кожному натиску клавіш)? Але так більш витратно, ніж коли просто руками різати-порівнювати рядки, плюс необхідність заескейплювати керуючі послідовності, якщо користувач їх випадково набере.

Подякували: leofun011

8 Востаннє редагувалося koala (18.02.2020 18:19:41)

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

У вас вже питали - чи обов'язково регулярки.
В більшості сучасних мов у стандартних/поширених бібліотеках є стрічковий предикат starts_with - от він вам і потрібен.

Подякували: leofun011

9

Re: [Регулярні вирази] Умова: Поки рядок збігається із зразком

Ось є, наприклад, атрибут pattern, куди можна загнати регулярку. Припускаю, що регулярка могла знадобитися топікстартеру для цього. В такому разі, її слід разово згенерувати зі зразка для порівняння, як було сказано вище.

Подякували: Betterthanyou, bebyk, leofun013