Упрощение регулярных выражений - побег - PullRequest
0 голосов
/ 10 сентября 2010

Я хочу, чтобы мои пользователи могли указывать разрешенные символы в данной строке.

Итак ... Regex - это здорово, но слишком сложно для моих пользователей.

я планирую разрешить пользователям указывать список разрешенных символов - например,

a-z|A-Z|0-9|,

я могу преобразовать это в регулярное выражение, которое выполняет сопоставление следующим образом:

[a-zA-Z0-9,]*

Однако я немного растерялся, чтобы разобраться со всеми побегами - представьте, если пользователь указал

a-z|A-Z|0-9| |,|||\|*|[|]|{|}|(|)

Ясно, что один из вариантов - разобраться с каждым случаем индивидуально, но перед тем, как написать такое неприятное решение- Есть ли какой-нибудь изящный способ сделать это?

Спасибо

Дэвид

Ответы [ 3 ]

2 голосов
/ 10 сентября 2010

Забудьте регулярное выражение, вот гораздо более простое решение:

bool isInputValid = inputString.All(c => allowedChars.Contains(c));
1 голос
/ 10 сентября 2010

Возможно, вы правы в своих клиентах, но вы можете предоставить некоторые вводные материалы по регулярным выражениям и посмотреть, как они продвигаются - вы можете быть удивлены.

Если вам действительно нужно упростить, вам, вероятно, потребуетсяОткажитесь от использования символов «труба» и предоставьте альтернативу, например, поместите каждый элемент в новую строку (например, в многострочное текстовое поле).

0 голосов
/ 10 сентября 2010

Чтобы сделать это как можно более простым для ваших пользователей, почему бы вам не отбросить "|"и концепция диапазонов символов, например, «az», и получить их просто для ввода полного списка символов, которые они хотят разрешить:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890 * {} ()

Вы получаетеидея.Я думаю, что это будет намного проще.

...