проверка регулярных выражений на наличие пробелов в середине строки - PullRequest
13 голосов
/ 03 апреля 2011

Я хочу проверить, что символы буквенно-цифровые:

Regex aNum = Regex("[a-z][A-Z][0-9]");

Я хочу добавить опцию, что может быть пробел, поэтому это будет выражение из двух слов:

Regex aNum = Regex("[a-z][A-Z][0-9]["\\s]");

но не смог найти правильный синтаксис.

ID применяется любое подстрекательство.

Ответы [ 5 ]

22 голосов
/ 03 апреля 2011

[A-Za-z0-9\s]{1,} должно работать на вас.Он соответствует любой строке, которая содержит буквенно-цифровые или пробельные символы и имеет длину не менее одного символа.Если вы принимаете подчеркивание, вы также сокращаете его до [\w\s]{1,}.

Вы должны добавить ^ и $ для проверки совпадения всей строки, а не только ее части:

^[A-Za-z0-9\s]{1,}$ или ^[\w\s]{1,}$.

5 голосов
/ 03 апреля 2011
"[A-Za-z0-9\s]*"

соответствует буквенно-цифровым символам и пробелам.Если вы хотите слово, которое может содержать пробелы, но хотите, чтобы оно начиналось и заканчивалось буквенно-цифровым символом, вы можете попробовать

"[A-Za-z0-9][A-Za-z0-9\s]*[A-Za-z0-9]|[A-Za-z0-9]"
4 голосов
/ 03 апреля 2011

Ровно два слова с одним пробелом:

Regex aNum = Regex("[a-zA-Z0-9]+[\s][a-zA-Z0-9]+");

ИЛИ любое количество слов с любым количеством пробелов:

Regex aNum = Regex("[a-zA-Z0-9\s]");
3 голосов
/ 03 апреля 2011

Чтобы не разрешать пустые строки, тогда

Regex.IsMatch(s ?? "",@"^[\w\s]+$"); 

и разрешить пустые строки

Regex.IsMatch(s ?? "",@"^[\w\s]*$"); 

Я добавил ?? "", поскольку IsMatch не принимает нулевые аргументы

1 голос
/ 17 марта 2019

Если вы хотите проверить наличие пробела в середине строки, вы можете использовать следующие шаблоны:

  1. "(\w\s)+": это слово должно совпадать, по крайней мере, с пробелом.
  2. "(\w\s)+$": это должно соответствовать как минимум слову с пробелом и заканчиваться пробелом.
  3. "[\w\s]+": это соответствует слову или пробелу или двум.
...