2013-03-03 4 views
1
string Val = Regex.Replace(TextBox1.Text, @"[^a-z, A-z, 0-9]", string.Empty); 

Это выражение не соответствует персонажу ^ и _. Что мне делать, чтобы соответствовать этим значениям?Регулярное выражение для специальных символов?

Еще одна вещь, если TextBox1.Text Строковое значение больше 10, последнее значение строки (11-е строковое значение) должно совпадать.

+0

что вы пытаетесь спросить ** точно ** .. – Anirudha

+0

для каретки вам нужно только чтобы избежать его с помощью обратного слэша '\ ^', как и для нижнего кода '_', вам не нужно это избегать, и я не могу понять ваш последний вопрос о длине строки, позаботиться о том, чтобы подчеркнуть ?? –

+0

Это выражение @ "[^ a-z, A-z, 0-9]" будет соответствовать всем остальным значениям^и _. Но мне нужно выражение, чтобы соответствовать этим двум значениям. –

ответ

3

Обратите внимание, что символ^имеет особое значение при заключении в квадратные скобки. Это означает соответствие всем, кроме тех, которые указаны в классе символов, в основном '[]'.

Если вы хотите, чтобы соответствовать "^" и "_", поставить каретку (^) в другом положении, чем после открывающей скобки, как это так, с помощью повторения, чтобы ограничить длину символов:

[\W_] 

Это будет убедиться, что персонажи вся строка равна 10.

Или вы избегаете этого, используя косую черту "\^".

string Val = Regex.Replace(TextBox1.Text, @"[\W_]", string.Empty); 
+0

Если я использую это выражение [^ \ w], i gt результат. Но я хочу ограничить длину символа. Разрешено только десять символов. что мне делать ? –

+0

@ASHOKA Проверьте мой ответ, я добавил ограничение на характер. – 2013-03-03 14:31:02

+0

@Kata: ASHOK специально использует отрицательный класс символов. Он просто случается, чтобы отрицать больше персонажей, чем он думает. См. Мой ответ. –

1

Ваша проблема A-z.

Это соответствует всем ASCII буквы A через Z, то символы, которые лежат между Z и a (которые содержат, помимо прочего, ^ и _), то все ASCII буквы между a и z. Это означает, что ^ и _ не будут соответствовать вашему регулярному выражению (а также запятая и пробел, которые вы также включили в свое регулярное выражение).

Чтобы уточнить, ваше регулярное выражение также может быть записаны в виде

[^a-zA-Z0-9\[\\\]^_` ,] 

Вы, вероятно, хотели

string Val = Regex.Replace(TextBox1.Text, @"[^a-zA-Z0-9]", string.Empty); 
Смежные вопросы