2012-01-31 2 views
0

Мне нужно регулярное выражение, которое может принимать все буквы (A-Z, которые чувствительны к регистру), цифры (0-9), пробелы и большинство символов. Поле не должно принимать символы с акцентом (ÁÉÚÍÓ), вкладки или следующие символы: обратная косая черта(), меньше (<), больше (>), тильда (~), равно (=), двойные кавычки (") или запятая (,)ASP.NET - Регулярное выражение для исключения определенных символов

Любые идеи о том, какое регулярное выражение мне понадобится для этого?

ответ

3

Что-то, как это должно работать:

^([A-Za-z0-9 ]+)$

Это будет соответствовать foo bar 1234 FOO BAR, но не foo bar 1234 FOO BAR dd или foo bar 1234 FOO BAR\

Примечание: Вы можете добавить большинство символов в квадратных скобках.

Редактировать: foo bar 1234 FOO BAR dd содержит вкладку (\t), но она сжимается.

+0

Это, кажется, по-прежнему принимаем: <>»и акцентированные символы – Theomax

+0

Я пробовал с http://regexpal.com/ и' '<','> , '' 'и', 'приводят к несоответствию. – npinti

3

Я думаю, что это должны символы, которые вы хотите

(?:[^\p{L}\\<>~=",\t]|[A-Za-z]) 

[] обозначает класс символов, то вы можете поместить все символы, которые вы хотите, чтобы

[^] обозначает отрицание класса символов, все символы внутри не допускаются.

Итак, я не знаю предопределенного класса, который содержит все буквы, которые не находятся в A-Z, поэтому я бы пошел на чередование.

Первый инвертированный класс содержит все письмо в \p{L}, а остальные другие символы, которые вы не хотите, чтобы позволить, но так как вы хотите, чтобы A-Z, и они также в \p{L} вы должны позволить им снова , Это делается во второй части (| - это чередование), где я допускаю [A-Za-z].

Так полное регулярное выражение должно выглядеть примерно так

^(?:[^\p{L}\\<>~=",]|[A-Za-z])+$ 
Смежные вопросы