2017-01-20 1 views
-1

Я создал функцию регулярного выражения и вызвал ее, когда данные сохраняются.Как отобразить первый специальный символ, введенный в текстовое поле, в метке

public static bool CheckSpecialCharacter(string value) 
{ 
    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"[~`[email protected]#$%^*()=|\{}';.,<>]"); 
    if (regex.IsMatch(value)) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

Используется здесь:

if (ClassName.CheckSpecialCharacter(txt_ExpName1.Text)==false) 
{ 
    lblErrMsg.Text = "Special characters not allowed"; 
    return; 
} 

Теперь вместо того, чтобы писать «Специальные символы не допускаются», я хочу, чтобы прикрепить 1-ый специальный символ, который был введен в текстовом поле, так если @ был введен, сообщение следует читать как «Специальный символ @ не допускается»

Можно ли это сделать? пожалуйста, помогите. Спасибо.

ответ

1

Попробуйте ввести код.

public static string CheckSpecialCharacter(string value) 
{ 
    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"[~`[email protected]#$%^*()=|\{}';.,<>]"); 
    var match = regex.Match(value); 
    if (match.Success) 
    { 
     return match.Value; 
    } 
    else 
    { 
     return string.empty; 
    } 
} 

использование:

var value = ClassName.CheckSpecialCharacter(txt_ExpName1.Text); 
if (!string.IsNullOrEmpty(value)) 
{ 
    lblErrMsg.Text = value + " Special characters not allowed"; 
    return; 
} 

ИЛИ вы можете сделать это, возвращая логическое значение и добавление одного out parameter в функции, но я не предположит, что .. check this link

EDIT - Для того, чтобы сделать то же самое в Javascript

function CheckSpecialCharacter(value) 
{ 
    var res = value.match(/[~`[email protected]#$%^*()=|\{}';.,<>]/g); 
    return res == null ? "" : res[0]; 
} 

использование:

var value = CheckSpecialCharacter(document.getElementById("txt_ExpName1").value); 

if(value != "") 
{ 
    document.getElementById("lblErrMsg").innerHTML = value + " Special characters not allowed"; 
} 
+0

Нет необходимости использовать регулярное выражение дважды. Просто используйте 'regex.Match', а затем проверьте, является ли' match.Success' значением * true *. –

+0

спасибо @ WiktorStribiżew –

+0

@KD это сработало спасибо! можете ли вы рассказать мне, как сделать то же самое в javascript? – sumedha

0

Попробуйте это:

public static bool CheckSpecialCharacter(string value, out string character) 
{ 
    var regex = new System.Text.RegularExpressions.Regex(@"[~`[email protected]#$%^*()=|\{}';.,<>]"); 
    var match = regex.Match(value); 
    character = regex.Match(value).Value; 
    return match.Length == 0; 
} 

и затем

string character; 
if (ClassName.CheckSpecialCharacter(txt_ExpName1.Text, out character) == false) 
{ 
    lblErrMsg.Text = character + " Special characters not allowed"; 
    return; 
} 
0

Вы можете просто использовать Matches(string) функцию от Regex, чтобы получить матчи затем проверить первый элемент, как это :

var regex = new Regex(@"[~`[email protected]#$%^*()=|\{}';.,<>]"); 
var matches = regex.Matches("This contains # two [email protected] characters"); 
if (matches.Count > 0) 
{ 
    var firstBadCharacter = matches[0]; 
} 

Затем вы можете обернуть результат своей проверки в Исключение:

throw new ArgumentException("Special character '" + firstBadCharacter + "' not allowed.");