Regex-проблема в C # - PullRequest
       15

Regex-проблема в C #

2 голосов
/ 18 декабря 2009

Я пытаюсь написать регулярное выражение, которое проверит, чтобы данная строка была «допустимым» именем. Строки имени извлекаются из базы данных, а затем проверяются на наличие странных символов. (Так как это для шведской системы, я все еще должен включить несколько странных символов, которые часто встречаются в шведских именах.;))

Проблема состоит в том, что это терпит неудачу каждую строку, которую это передает. Я предполагаю, что регулярное выражение не завершается правильно, и, если не удается, конец строки. Но я не могу понять, почему.

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

    public static bool NameCheck(string name)
    {
        if(name == "" || name == " " || name == null)
        {
            return false;
        }

        //Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+/i");
        Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$/i");

        return regex.IsMatch(name);
    }

Есть ли кто-нибудь?

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

Ответы [ 2 ]

5 голосов
/ 18 декабря 2009

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

Regex regex = new Regex(@"^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$",
                        RegexOptions.IgnoreCase);
1 голос
/ 18 декабря 2009

[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]

То есть у тебя никогда не будет Бьёрна или Лукаша? Рассматривается [\w.-], а затем регулярное выражение учитывает то, что Unicode определяет как алфавитно-цифровые? \w также будет соответствовать [0-9], но вы всегда можете сравнить с теми во втором регулярном выражении.

[---\s]

Скажи что? Как насчет [\s-].

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