powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Странности с regexp
11 сообщений из 11, страница 1 из 1
Странности с regexp
    #39831181
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое выражение в JS-скрипте:
Код: javascript
1.
/^(1\d{6})|(\d{6})$/.test(code)


В переменной code должно быть либо 6-значное число, либо 7-значное число, начинающееся с 1.
Однако это выражение выдает true для кода 123456789.
Если смотреть разбор выражения (например на regex101.com), то получается, что оно неверно разбивается по альтернативам:
1-ый вариант: ^(1\d{6})
2-ой вариант: (\d{6})$

А как бы указать, что ^ и $ не должны включаться в альтернативы?
...
Рейтинг: 0 / 0
Странности с regexp
    #39831194
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

такое не лучше ^(1?)\d{6}$ ?
...
Рейтинг: 0 / 0
Странности с regexp
    #39831318
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, фактические шаблоны сложнее и в один из не объединить.
Внутренние скобки убрал, теперь нормально.
...
Рейтинг: 0 / 0
Странности с regexp
    #39831449
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.А как бы указать, что ^ и $ не должны включаться в альтернативы?
"Последнюю" часть можно исключить, используя
Код: javascript
1.
(?=...)



"Первую" же часть из выборки не исключить.
...
Рейтинг: 0 / 0
Странности с regexp
    #39831476
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то это избыточно.
Я просто указал: /^(1\d{6}|\d{6})$/
Ну либо можно было снаружи скобками еще раз обернуть, но это тоже избыточно.
...
Рейтинг: 0 / 0
Странности с regexp
    #39831487
OldMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,
monstrU предложил вам более рациональный шаблон.
В идеале же можно написать так
Код: javascript
1.
^1?\d{6}$


Все остальное будет избыточным.
...
Рейтинг: 0 / 0
Странности с regexp
    #39831567
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реальный список допустимых шаблонов (в дальнейшем может расширяться):
^1\d\d-?\d\d\d\d$
^\d\d\d-?\d\d\d$
^\d9\d-\d\d\d$

По-моему их лучше просто перечислить, чем составлять сложное составное выражение, а потом через месяц пытаться вспомнить, что оно означает.
...
Рейтинг: 0 / 0
Странности с regexp
    #39831708
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Как-то это избыточно.
Зато может исключить из результата выборки не нужную "последнюю" часть выражения.
...
Рейтинг: 0 / 0
Странности с regexp
    #39836974
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Код: php
1.
/^(1\d{6})|(\d{6})$/


Потому что ты написал, ( начинается с 1 и содержит далее 6 цифр ) ИЛИ ( заканчивается на 6 цифр )
21916782
...
Рейтинг: 0 / 0
Странности с regexp
    #39837304
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан ДамировичИЛИ ( заканчивается на 6 цифр )
Это не про твое выражение.

Твое выражение нужно читать так
( начинается с 1 и далее 6 цифр ) ИЛИ ( состоит из 6 цифр )
...
Рейтинг: 0 / 0
Странности с regexp
    #39837305
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамировичзаканчивается
Т.е. что-то началось и оно не пустое... А потом следует некое продолжении, чем оно заканчивается.
Схематично можно представить так:
Код: javascript
1.
<нечто>[заканчивается]
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Странности с regexp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]