Я только что написал регулярное выражение, чтобы выполнить базовую проверку синтаксиса, является ли строка допустимой математической формулой.
Я просто определяю группу допустимых символов и проверяю, совпадает ли строка (я немного сокращаю регулярное выражение:
private static readonly String validFormuar = @"^[\d\+-\*\/]+$";
private static bool IsValidFormular(String value)
{
return Regex.IsMatch(value, validFormuar);
}
Я позволю только цифры, +, -, * и / в этом примере.
Поскольку +, * и / являются специальными символами в регулярных выражениях, я избежал их.
Однако этот код генерирует ArgumentException (перевод с немецкого)
"^[\d\+-\*\/]+$" is beeing analyzed - [x-y]-area in reversed Order.
Если я дважды убегу *
private static readonly String validFormuar = @"^[\d\+-\\*\/]+$";
результат, как и ожидалось.
Это ошибка в синтаксическом анализаторе System.Text.RegularExpressions? Потому что я считаю свое первое регулярное выражение правильным. Если нет, почему я должен дважды убежать от «*»?