2013-03-01 3 views
2

Это мой код, который проверяет, имеются ли только буквенно-цифровые символы, но когда я вхожу что-то вроде adasd @ # $, оно по-прежнему совпадает, и я понятия не имею, почему. Любая идея, как это исправить?Регулярное выражение, но не должно

Match Match = Regex.Match(value.ToString(), "[0-9a-zA-Z]"); 
       if (Match.Success) 
       { 
        return true; 
       } 
       else 
       { 
        return false; 
       } 
+0

Попробуйте '^ [0-9a-zA-Z] * $' как ваше регулярное выражение. – Passerby

ответ

9

То, что у вас есть, соответствует любой строке, содержащей одну букву или номер где-то в ней.

Вам нужно добавить анкеры в начало и конец строки (^ и $), а также + для обеспечения более одного символа:

"^[0-9a-zA-Z]+$" 

Это означает, что «вся строка должна быть сделанным из букв и цифр ".

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

+0

Большое спасибо! – Jamie

+0

@ user2078246, нажмите большую зеленую галочку слева от ответа, чтобы отметить ее правильно. – Reimius

0

Ваше регулярное выражение [0-9a-zA-Z] проверяет любой буквенно-цифровой символ во входной строке. Так как он находит a, d, a, s, d в вашей входной строке, он возвращает true.
Что вам нужно сделать, так это указать начало и конец энхов в вашем регулярном выражении. Новое регулярное выражение будет выглядеть так:

^[0-9a-zA-Z]+$ 
+1

(на самом деле он возвращает 'истина', потому что он находит' a'. Он даже не потрудился проверить дальше) –

+0

да, правда, я просто хотел дать понять, что он вернёт истину при обнаружении любого из них. –

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