#c# #regex
Вопрос:
Хорошо, извините, это может показаться глупым вопросом, но я не могу понять эту вещь :
Я пытаюсь проанализировать строку и просто хочу проверить, содержит ли она только следующие символы : ‘0123456789dD ‘
Я перепробовал много вещей, но просто не могу найти правильное регулярное выражение для использования!
Regex oReg = new Regex(@"[d dD ] ");
oReg.IsMatch("e4");
вернет значение true, даже если e не разрешено…
Я перепробовал много строк, включая регулярное выражение(«[1234567890 dD ] «)…
Это всегда работает с регулярными выражениями, но не в C#…
Пожалуйста, посоветуйте, и еще раз прошу прощения, это кажется очень глупым вопросом
Ответ №1:
Попробуй это:
@"^[0-9dD ] $"
^
И $
в начале и в конце означают начало и конец входной строки соответственно. Таким образом, между началом и концом допускаются только указанные символы. В вашем примере регулярное выражение совпадает, если строка содержит один из символов, даже если она содержит и другие символы.
@комментарии: Спасибо, я исправил пропажу
и пробел.
Комментарии:
1. Я думаю, что вашему примеру нужен еще один или * перед$, в настоящее время он соответствует только одному символу
Ответ №2:
Упс, ты забыл о границах, попробуй:
Regex oReg = new Regex(@"^[0-9dD ] $");
oReg.IsMatch("e4");
^ соответствует началу текстового потока, $ соответствует концу.
Комментарии:
1. Пространство было создано по оригинальному образцу
Ответ №3:
Он соответствует 4; вам нужно ^ и$, чтобы завершить регулярное выражение, если вы хотите, чтобы вся строка полностью соответствовала, т. е.
Regex re = new Regex(@"^[d dD ] $");
Console.WriteLine(re.IsMatch("e4"));
Console.WriteLine(re.IsMatch("4"));
Ответ №4:
Это связано с тем, что регулярные выражения также могут совпадать с частями входных данных, в этом случае они просто совпадают с «4» из «e4». Если вы хотите сопоставить целую строку, вы должны окружить регулярное выражение «^» (соответствует началу строки) и «$» (соответствует концу строки).
Поэтому, чтобы ваш пример работал, вы должны написать следующее:
Regex oReg = new Regex(@"^[d dD ] $");
oReg.IsMatch("e4");
Ответ №5:
Я считаю, что он возвращает истину, потому что он находит 4. Ничто в регулярном выражении не исключает букву e из результатов.
Ответ №6:
Другой вариант-перевернуть все, чтобы оно совпадало с символами, которые вы не хотите разрешать:
Regex oReg = new Regex(@"[^0-9dD ]");
!oReg.IsMatch("e4");