.NET RegEx для букв и пробелов

Я пытаюсь создать регулярное выражение в C#, который позволяет только алфавитно-цифровые символы и пробелы. В настоящее время я пробую следующее:

string pattern = @"^\w+$";
Regex regex = new Regex(pattern);
if (regex.IsMatch(value) == false)
{
  // Display error
}

Что я делаю неправильно?

5
задан Alexander Ventura 10 July 2013 в 21:56
поделиться

3 ответа

Если вам нужен только английский, попробуйте этот regex:

"^[0-9A-Za-z ]+$"

В скобках указан набор символов

0-9: Все цифры

A-Z: Все заглавные буквы

a-z: Все строчные буквы

' ': Пробелы

Если вам нужен юникод / интернационализация, вы можете попробовать этот regex:

"^[\\w ]+$"

Этот regex будет соответствовать всем буквам и цифрам юникода и пробелам, что может быть больше, чем вам нужно, поэтому если вам нужен только английский или основные римские символы, первый regex будет проще и быстрее в исполнении.

Обратите внимание, что для обоих regex я включил оператор ^ и $, которые означают совпадение в начале и в конце. Если вам нужно извлечь это из строки, и это не обязательно должна быть вся строка, вы можете удалить эти два оператора.

21
ответ дан 18 December 2019 в 05:28
поделиться

Если, кроме 0-9, a-z и A-Z, вам также нужно охватить любые буквы с ударением, такие как ï, é, æ, Ć или Ş, тогда вам лучше использовать свойства Unicode \p{...} для сопоставления, т.е. (обратите внимание на пробел):

string pattern = @"^[\p{IsLetter}\p{IsDigit} ]+$";
4
ответ дан 18 December 2019 в 05:28
поделиться

Класс символов \ w не соответствует пробелам. Попробуйте заменить его на [\ w] (после \ w есть пробел для соответствия символам слов и пробелам. Вы также можете заменить пробел на \ s если вы хотите сопоставить любые пробелы.

4
ответ дан 18 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: