2014-02-18 4 views
1

У меня есть Regex образец, который должен позволить все алфавитно-цифровые символы и -, _, . и пространствоRegex.IsMatch возвращает истину, если не

"[A-Za-z0-9-_. ]+"

Я пытаюсь проверить строку на этом regex, используя Regex.IsMatch, но он возвращает true. Зачем?

string pattern = "[A-Za-z0-9-_. ]+"; 
string input = "rtgfd&**((&"; 
bool isMatch = Regex.IsMatch(input, pattern); 
// isMatch is true, why? 

ответ

4

Он соответствует тому, что ваша строка содержит один или несколько символов в наборе [A-Za-z0-9-_. ]. Если вы хотите только что изменить ваш шаблон к этому:

string pattern = "^[A-Za-z0-9-_. ]+$"; 

Это заставит шаблон в соответствии с начала и до конца строки.

+0

'.' специальный. Вам нужно избежать этого. '@"^[A-Za-z0-9 -_ \.] + $ "' – wdosanjos

+4

@wdosanjos Нет, не в классе символов. 'Regex.IsMatch (« Текст »,« [.] ») // false' – Vache

+0

@wdosanjos Внутри класса символов' [] 'вам не нужно бежать. – dognose

Смежные вопросы