Эквивалент RegularExpressionAttribute для SymbolUtilityServices.ValidateSymbolName

В AutoCAD есть утилита для определения допустимости строки для имени символа, например, для имени блока или слоя. Эта утилита:

try
{
    // Validate the provided symbol table name
    SymbolUtilityServices.ValidateSymbolName(s, false);
    System.Windows.Forms.MessageBox.Show(s + " is a valid name.");
}
catch
{
    // An exception has been thrown, indicating that
    //    the name is invalid
    System.Windows.Forms.MessageBox.Show(s + " is an invalid name.");
}

где "s" - строка, которую вы тестируете.

См. Как проверить, является ли данная строка действительным именем для элемента в таблице символов?

Поскольку этот инструмент генерирует исключение, если имя не соответствует, я бы предпочел использовать атрибут Regex, чтобы сделать то же самое, что-то вроде:

[RegularExpressionAttribute(@"^[a-Z]+$", ErrorMessage = "Special characters not allowed")]

Но здесь кроется моя проблема, я не очень хорошо разбираюсь в Regex. Итак, что бы выразить, чтобы запретить эти символы:

\<> / ":;*| =`

(пробелы разрешены)

Неподдерживаемые символы в имени блока

Ваши мысли и помощь приветствуются. Matt

1 ответ

Это выражение:

[RegularExpressionAttribute(@"^[a-zA-Z \d_-]+$", ErrorMessage = "Certain special characters not allowed")] 

Похоже, у меня все получилось, но я чувствую, что это явно не запрещает символы, а позволяет только определенные символы.

Если есть более краткий ответ, я приму его.

Другие вопросы по тегам