Эквивалент 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")]
Похоже, у меня все получилось, но я чувствую, что это явно не запрещает символы, а позволяет только определенные символы.
Если есть более краткий ответ, я приму его.