Нужна помощь с регулярным выражением - PullRequest
3 голосов
/ 25 апреля 2011

Возможно ли сделать это с одним регулярным выражением?

Мне нужно сопоставить только те строки, которые имеют ровно одну точку / точку, но ограничение состоит в том, что эта точка / точка не должна быть в концестрока.

Пример:

abc.d will match

.abcd will match

abcd. will not match

Ответы [ 2 ]

7 голосов
/ 25 апреля 2011

Да, вы можете сделать это в одном регулярном выражении:

^[^.]*\.[^.]+$
3 голосов
/ 25 апреля 2011

Мне очень нравится ответ @ codaddict, но как насчет чего-то без Regex? (Код C # ниже)

if(a.Split('.').Length>2 || a.EndsWith("."))
    {
        Console.WriteLine("invalid");
    }

Что мне нравится, так это то, что гораздо понятнее, что вам не нужна строка с двумя ., а также . не должно быть в конце. И это на самом деле может быть быстрее, чем с помощью регулярных выражений.

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