Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составление регулярного выражения 
:(
    Опции темы
asper
Дата 12.10.2005, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



Дрону - да, пример работает.
Перекидываю через reflector в vb.net - не позволяет вводить вообще ничего smile


PM MAIL   Вверх
asper
Дата 12.10.2005, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



Дрон - спасибо, ваш код работает (проблема с декомпиляцией была моим глюком). НО - он не позволяет вводить на первой позиции цифры, а задача состоит в том, чтобы на первой позиции альтернативно можно было ввести либо К, либо цифру, а на остальных четырех - только цифры.
PM MAIL   Вверх
asper
Дата 12.10.2005, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



Mikle и Дрон - спасибо Вам огромное!
Ваши предложения в комплексе помогли мне решить задачу.
Вот что получилось в итоге.

Код

Public Shared regexp As Regex = New Regex("^(K|Л|\d{0,1})\d{0,5}", (RegexOptions.Compiled Or RegexOptions.IgnoreCase))

  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If (Not regexp.Replace(TextBox1.Text, "") Is "") Then
            Dim match1 As Match = regexp.Match(TextBox1.Text)
            If match1.Success Then
                TextBox1.Text = match1.Groups.Item(0).Captures.Item(0).Value
                TextBox1.SelectionStart = TextBox1.Text.Length
            Else
                TextBox1.Text = ""
            End If
        End If
    End Sub

PM MAIL   Вверх
Дрон
Дата 12.10.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 1
Всего: 93



Вот и хорошо smile

Только надо бы ещё обработчик KeyPress добавить как у меня, иначе при попытке нажать недопустимый символ курсор сбрасывается в начало строки.


--------------------
Да. Именно так.
PM   Вверх
-Mikle-
Дата 12.10.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Заходи, спрашивай smile
не разрешимых задач не бывает smile


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
asper
Дата 13.10.2005, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



[quote]
Только надо бы ещё обработчик KeyPress добавить как у меня, иначе при попытке нажать недопустимый символ курсор сбрасывается в начало строки.
[quote]
От этого помогает строчка:
Код

TextBox1.SelectionStart = TextBox1.Text.Length

PM MAIL   Вверх
Дрон
Дата 13.10.2005, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 1
Всего: 93



asper
Проглядел smile
Ну тогда можно и так оставить.

Хотя если курсор был посередине текста -- он ускачет в конец. Это, конечно, редкая ситуация, но я привык всё делать надёжно smile


--------------------
Да. Именно так.
PM   Вверх
asper
Дата 13.10.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



KeyPress у меня почему-то не срабатывает - не позволяет вводить вообще ничего smile
Код

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If Char.IsLetterOrDigit(e.KeyChar) Then
            Dim text1 As String = (Me.TextBox1.Text & e.KeyChar)
            If (Not regexp.Replace(text1, "") Is "") Then
                e.Handled = True
            End If
        End If
    End Sub

PM MAIL   Вверх
-Mikle-
Дата 13.10.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



а может быть так?

Код

            If match1.Success Then
                Dim pos As Integer = TextBox1.SelectionStart

                TextBox1.Text = match1.Groups.Item(0).Captures.Item(0).Value

                TextBox1.SelectionStart = pos '+ 1 'или с увеличеным на один... не могу сообразить щас
            Else
                TextBox1.Text = ""
            End If


Добавлено @ 20:36
в обработчике TextBox1_TextChanged.....


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
asper
Дата 14.10.2005, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 10.8.2005

Репутация: нет
Всего: нет



Вариант интересный smile , но если поставить курсор в середину введенной строки и попробовать добавить неразрешенный символ, то часть строки сотрется - до позиции вводимого символа.
PM MAIL   Вверх
Дрон
Дата 14.10.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 1
Всего: 93



Цитата(asper @ 14.10.2005, 03:35)
Вариант интересный smile , но если поставить курсор в середину введенной строки и попробовать добавить неразрешенный символ, то часть строки сотрется - до позиции вводимого символа.

Дык, это нормально.

Код
TextBox1.Text = match1.Groups.Item(0).Captures.Item(0).Value


Оставляет только ту часть текста, которая совпадает с шаблоном. А после введения неверного символа в середину строки совпадать будет только первая часть строки.


Всё-таки надо тебе разобраться с KeyPress

Это сообщение отредактировал(а) Дрон - 14.10.2005, 14:34


--------------------
Да. Именно так.
PM   Вверх
JaguarSmith
Дата 8.11.2005, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



Может кто-нибудь подскажет
Регекспа "<p class(=".+"|=)" совпадает с выражением:
"<p class="textIndent1AndSmaller"> Pinna B, Brelstaff GJ (2000) A new visual illusion of relative motion. Vision Res 40:2091–2096 &nbsp;[<a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=10878270&amp;query_hl=1" target="_blank""

smile как сделать чтоб искал не доконца строки а только до последних кавычках в "class="?

Это сообщение отредактировал(а) JaguarSmith - 8.11.2005, 01:24
PM MAIL YIM   Вверх
Дрон
Дата 8.11.2005, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 1
Всего: 93



Вот так надо: <p class(=".+?"|=)

Символ ? снимает "жадность" smile


--------------------
Да. Именно так.
PM   Вверх
JaguarSmith
Дата 9.11.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



Походу FrontPage как-то криво работает с регекспами - по краю вышеприведённое он не понимает - придётся самому писать прогу для оптимизации ХТМЛ smile
PM MAIL YIM   Вверх
Гость_cleric
Дата 29.11.2005, 15:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











попробуй на каждом событии key press для текст бокса проверять перечисленные тобой условия:
"уже содержащийся текст" & "вводимый символ" ismatch для регикса "(^K|^[0-9])[0-9]+" и длинна не больше 5... если условия не выполняются то вводимый символ не добавляется к тексту...

(кстати максимальное количество символов можно в свойствах текст бокса устанавливать, тогда и проверять не надо)

воот...
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.