Регулярное выражение, соответствующее любому номеру, букве или тире - PullRequest
5 голосов
/ 05 августа 2010

Учитывая searchString = "23423asdfa-''"

Это регулярное выражение должно иметь значение false, но это не так!Есть идеи?

Regex rgx = new Regex(@"[\w-]*");
rgx.IsMatch(searchString)

Ответы [ 2 ]

9 голосов
/ 05 августа 2010

Это потому, что вы не ограничивали его совпадением со всей строкой. Следовательно, разрешено рассматривать совпадения на подмножествах строки. Очень большое подмножество строки соответствует данным, поэтому регулярное выражение возвращает true.

Попробуйте сделать следующее, чтобы оно совпадало со всем вводом.

Regex rgx = new Regex(@"^[\w-]*$");
rgx.IsMatch(searchString)
2 голосов
/ 05 августа 2010

Вы должны закрепить свое выражение.В противном случае, если какая-либо подстрока входного совпадения совпадает, совпадение с регулярным выражением считается успешным.Измените регулярное выражение на «^ [\ w -] * $», где ^ и $ будут соответствовать началу и концу строки соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...