[SIZE=2][COLOR=#0000ff][FONT=Courier New]static [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][SIZE=2].WriteLine(ValidateString([/SIZE][SIZE=2][COLOR=#800000]"_abc"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]));[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].ReadKey();[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] ValidateString([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] str)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Regex[/COLOR][/SIZE][SIZE=2] expr = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Regex[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"[a-zA-Z]+"[/COLOR][/SIZE][SIZE=2]); [/SIZE][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff] return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] expr.Match(str).Value;[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]
Как правильно написать регулярное выражение
В TextBox'е должна быть строка. Она не должна начинаться с пробела(ов) и в ней не должно быть кавычек, апострофов. А лучше и вообще никаких символов типа {}, [] и т.п.
Я регулярными выражениями никогда серьёзно не занимался, я сейчас просто нет времени разбираться.
Так, что пока могу написать только что-то вроде "\S+D{2,50}"
Подскаже, может, кто-нибудь?
В TextBox'е должна быть строка. Она не должна начинаться с пробела(ов) и в ней не должно быть кавычек, апострофов. А лучше и вообще никаких символов типа {}, [] и т.п.
Я регулярными выражениями никогда серьёзно не занимался, я сейчас просто нет времени разбираться.
Так, что пока могу написать только что-то вроде "\S+D{2,50}"
Подскаже, может, кто-нибудь?[/quote]
Дело в том, что написать стргий валидатор не получится, и следующий код выдасть совпадение:
Код:
Можно создать регулярное выражение, которое бы проверяло наличие запрещённых символов. В твоём случае должно быть что-то вроде:
Код:
[FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]bool[/COLOR][/SIZE][SIZE=2] ValidateString([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] str)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Regex[/COLOR][/SIZE][SIZE=2] expr = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Regex[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"([a-zA-Z]*[0-9]*)+"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]); [/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] expr.IsMatch(str);[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Regex[/COLOR][/SIZE][SIZE=2] expr = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Regex[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"([a-zA-Z]*[0-9]*)+"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]); [/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] expr.IsMatch(str);[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]
Но я бы порекомендовал (с точки зрения быстродействия) сканировать строку вручную и проверять каждый символ на несоответствие.
Пока я так и делаю. Из строки, введенной в текстбокс просто удаляю всё ненужное. Просто мне кажется, использовать валидаторы... правильнее чтоли. Хотя работает вроде...
Пока я так и делаю. Из строки, введенной в текстбокс просто удаляю всё ненужное. Просто мне кажется, использовать валидаторы... правильнее чтоли. Хотя работает вроде...[/quote]
Вот так как ты делаешь - это правильнее, т.к. работает быстрее..