Сделайте регулярное выражение нечувствительным к регистру в ASP.NET RegularExpressionValidator

Учитывая это регулярное выражение: "^[0-9]*\s*(lbs|kg|kgs)$" как я делаю это нечувствительным к регистру? Я пытаюсь использовать это в блоке проверки допустимости регулярного выражения .NET, таким образом, я должен указать нечувствительность к регистру в шаблоне.

Я не могу использовать RegexOptions programatically, потому что я указываю регулярное выражение в RegularExpressionValidator

38
задан goodeye 24 February 2013 в 00:20
поделиться

3 ответа

Я выяснил.

С учетом регистра: ^[0-9]\s(lbs|kg|kgs)$

Case insensitive: (?i:^[0-9]\s(lbs|kg|kgs)$)

Я полагаю, что это специфично для .NET реализации регулярных выражений. Поэтому если вы используете это в RegularExpressionValidator, вам придется отключить проверку на стороне клиента, потому что парсер javascript regex не распознает токен ?i.

51
ответ дан 27 November 2019 в 03:24
поделиться

Используйте RegEx Options

Regex regExInsensitive = new Regex(@"^[0-9]\s(lbs|kg|kgs)$", RegexOptions.IgnoreCase);

В других языках обычно можно указать модификатор RegEx после конца Reg Ex; модификатор "без учета регистра" - это 'i':

В Perl:

if($var =~ /^[0-9]\s(lbs|kg|kgs)$/i) { # the /i means case insensitive
    # ...
}

In PHP:

if(preg_match("/^[0-9]\s(lbs|kg|kgs)$/i", $var)) {
    // ...
}
24
ответ дан 27 November 2019 в 03:24
поделиться

Проще всего просто изменить регулярное выражение на

^[0-9]*\s*([lL][bB][sS]|[kK][gG][sS]?)$

Это ужасно читать, но все будет работать нормально.

3
ответ дан 27 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: