powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как составить такое регулярное выражение?
11 сообщений из 11, страница 1 из 1
Как составить такое регулярное выражение?
    #37865288
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершпю десятый подход в изучении регулярных выражений, но до полного понимания этого процесса еще далеко, поэтому прошу помощи.

Задача: строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна заканчиваться на подчеркивание, дефис или точку.

Написал такое: /^[a-zа-яіїґєэъы\d]+[-а-яіїґєэъы\w.]*[a-zа-яіїґєэъы\d]+$/i

Работает, но не пропускает строки, состоящие из одного символа. Я вижу почему - два плюса в выражении, но как по другому сделать додуматься не могу!
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37865294
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, в конце должно быть как то так
Код: sql
1.
бла-бла-бла*([a-zа-яіїґєэъы\d])?$/i



PS подчеркивания не видать в регекспе.
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37865447
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай IIСовершпю десятый подход в изучении регулярных выражений, но до полного понимания этого процесса еще далеко, поэтому прошу помощи.

Задача: строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна заканчиваться на подчеркивание, дефис или точку.

Написал такое: /^[a-zа-яіїґєэъы\d]+[-а-яіїґєэъы\w.]*[a-zа-яіїґєэъы\d]+$/i

Работает, но не пропускает строки, состоящие из одного символа. Я вижу почему - два плюса в выражении, но как по другому сделать додуматься не могу!

Правило должно быть примерно таким: /^[a-zа-яіїґєэъы\d]*[a-zа-яіїґєэъы\d]$/i
То есть, мы должны обязательно увидить 1 символ в конце строки + любое количество символов до него (в том числе и ноль).. Вот так должно работать... проверьте ;)

P.S. А разве буквы "ы", "ъ" и "э" не находятся в промежутке между а и я?
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37865457
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНиколай IIСовершпю десятый подход в изучении регулярных выражений, но до полного понимания этого процесса еще далеко, поэтому прошу помощи.

Задача: строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна заканчиваться на подчеркивание, дефис или точку.

Написал такое: /^[a-zа-яіїґєэъы\d]+[-а-яіїґєэъы\w.]*[a-zа-яіїґєэъы\d]+$/i

Работает, но не пропускает строки, состоящие из одного символа. Я вижу почему - два плюса в выражении, но как по другому сделать додуматься не могу!

Правило должно быть примерно таким: /^[a-zа-яіїґєэъы\d]*[a-zа-яіїґєэъы\d]$/i
То есть, мы должны обязательно увидить 1 символ в конце строки + любое количество символов до него (в том числе и ноль).. Вот так должно работать... проверьте ;)

P.S. А разве буквы "ы", "ъ" и "э" не находятся в промежутке между а и я?

hotfix:
Код: javascript
1.
/^[a-zа-яіїґєэъы\d\.\-_]*[a-zа-яіїґєэъы\d]$/i

... сорри, забыл про "-", "_" и "." :)
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37866757
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят я извиняюсь, писал в 2 часа ночи и недописал задачу:
строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна начинаться и заканчиваться на подчеркивание, дефис или точку.
авторА разве буквы "ы", "ъ" и "э" не находятся в промежутке между а и я?
У меня сейчас выставлен русский язык в Windows и украинские буквы не находятся в промежутке а-я. Я предположил, что если у человека будет стоять украинский язык, то у него буквы "ы", "ъ" и "э" не будут в промежутке а-я
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37867007
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай IIРебят я извиняюсь, писал в 2 часа ночи и недописал задачу:
строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна начинаться и заканчиваться на подчеркивание, дефис или точку.
авторА разве буквы "ы", "ъ" и "э" не находятся в промежутке между а и я?
У меня сейчас выставлен русский язык в Windows и украинские буквы не находятся в промежутке а-я. Я предположил, что если у человека будет стоять украинский язык, то у него буквы "ы", "ъ" и "э" не будут в промежутке а-я
Код: javascript
1.
/^([a-zа-яіїґєэъы\d][a-zа-яіїґєэъы\d\.\-_]*)?[a-zа-яіїґєэъы\d]$/i


ну тогда что-то типа этого :)

авторУ меня сейчас выставлен русский язык в Windows и украинские буквы не находятся в промежутке а-я. Я предположил, что если у человека будет стоять украинский язык, то у него буквы "ы", "ъ" и "э" не будут в промежутке а-я

Если мы говорим про регулярки в php, а php на серваке, то и зависеть выполнение регулярки будет от выставленой на серваке локали... Вообщем, что бы быть уверенным, что всё отработается как надо, лучше просто в начале скрипта выставить нужную локаль и всё :)
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37868334
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрну тогда что-то типа этого :)
Спасибо работает! Сам бы врятле додумался, хотя сейчас принцип действия понятен.
ПрограмёрЕсли мы говорим про регулярки в php
У меня одна и таже регулярка проверяет форму перед отправкой на JS, а потом и на PHP (на всякий случай если JS отключен).
JS как я понимаю от Windows зависит, вот и перестраховываюсь.
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #37868693
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай IIПрограмёрну тогда что-то типа этого :)
Спасибо работает! Сам бы врятле додумался, хотя сейчас принцип действия понятен.
ПрограмёрЕсли мы говорим про регулярки в php
У меня одна и таже регулярка проверяет форму перед отправкой на JS, а потом и на PHP (на всякий случай если JS отключен).
JS как я понимаю от Windows зависит, вот и перестраховываюсь.

Насколько понимаю, нет )) зависит от того, в какой кодировке была отдана страница (js скрипт)... Браузер сам перекодировать не будет... Вообщем скажем так, я переводил все свои старые сайты на utf-8 с cp1251, долго мучался с php (менял локали, менял функции на мультибайтовые и т.д.), а вот все js скрипты пошли без шаманства ;) Это означает, что браузер сам применил нужную локаль для всех скриптов на странице :).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как составить такое регулярное выражение?
    #38477403
Vezha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николай IIстрока может включать буквы, цифры, подчеркивание, дефис и точку, но не должна начинаться и заканчиваться на подчеркивание, дефис или точку.
Предлагаю инной вариант решения:
'/^(?<!_|-|\.)([-_a-zа-яіїґєэъы\d\.]*)(?!_|-|\.)$/im'

и ЄкомментарийЭ к написанному:
^Єначало строкиЭ
_|-|\. Є"_" или "-" или "."Э
(?<!Єчто НЕ должно идти перед подстрокой, которую мы ищем.Э)
(?!Єчто НЕ должно совпасть справа от искомой подстроки.Э)
$Єконец строкиЭ
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #38484603
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай IIРебят я извиняюсь, писал в 2 часа ночи и недописал задачу:
строка может включать буквы, цифры, подчеркивание, дефис и точку, но не должна начинаться и заканчиваться на подчеркивание, дефис или точку.
авторА разве буквы "ы", "ъ" и "э" не находятся в промежутке между а и я?
У меня сейчас выставлен русский язык в Windows и украинские буквы не находятся в промежутке а-я. Я предположил, что если у человека будет стоять украинский язык, то у него буквы "ы", "ъ" и "э" не будут в промежутке а-я


про кодировку не было ни слова, только про буквы и цифры, поэтому Юникод-версия:
perl regexp
----------------------

Код: perl
1.
2.
3.
4.
5.
use utf8;

/ ^ \p{XPosixAlnum}*               # только буквы и цифры в начале
     ( \p{XPosixAlnum} | [._-] )*  # в середине к ним добавляются подчеркивание, дефис и точка
    \p{XPosixAlnum} $/x            # только буквы и цифры в конце
...
Рейтинг: 0 / 0
Как составить такое регулярное выражение?
    #38485427
JustCrazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или так:
Код: php
1.
/^[^\_\.\-][A-zА-я0-9\.\-\_]*[^\_\.\-]$/
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как составить такое регулярное выражение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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