#.net #regex
#.net #регулярное выражение
Вопрос:
- Элемент списка
Я использую следующее регулярное выражение для проверки строки ^[a-zA-Z0-9-/]*
private static void ValidateActualValue(string value)
{
if (String.IsNullOrEmpty(value)) throw new ArgumentNullException("value");
if (Regex.IsMatch(value, (@"^[a-zA-Z0-9-/]*")))
{
throw new InvalidBarcodeException(value);
}
}
Следующая строка должна быть разрешена string correctBarcodeString = «1-234567890 /A»;
Однако по-прежнему возникает исключение.
Допустимые значения должны быть:
- 1234234545689889097
- A-adf90923409/1234
- Ааааааааааа
- BC-9876655788
- BC-345 / q3435/wqer
- ABC-/BCD
- и т.д.
Ответ №1:
Поместите -
символ в конец класса или экранируйте его.
[a-zA-Z0-9/-]
или [a-zA-Z0-9-/]
Ответ №2:
Внутри группы символов -
должно быть в начале или в конце, в противном случае оно должно быть экранировано.
Поэтому измените его на
"^[a-zA-Z0-9/-]*"
Редактировать:
Я бы также предложил привязку в конце регулярного выражения, в противном случае оно также будет соответствовать, пока действительна первая часть.
"^[a-zA-Z0-9/-]*$"
если вы хотите избежать сопоставления с пустой строкой, используйте
вместо *
. Или, если вы знаете допустимый диапазон Min / Max для используемой длины {4,20}
, если минимальное количество символов равно 4, а максимальное — 20.
Комментарии:
1. это соответствует истине для всех приведенных выше примеров.
Ответ №3:
Я то, что вы действительно хотите;
@"^[w/-] "
Использование вместо * также будет охватывать пустую строку. w = все цифры буквы
Комментарии:
1. w соответствует также подчеркиванию
_
Ответ №4:
Изменить
@"^[a-zA-Z0-9-/]*"
Для
@"^[a-zA-Z0-9/]*"
У вас есть дополнительный дефис после 9.
Комментарии:
1. Я думаю, он хотел, чтобы ‘-‘ также учитывалось.