在AutoCAD中,有一个实用程序,用于确定字符串是否对符号名称有效,例如,块名称或图层名称。该实用程序是:
$now=date('Y-m-d H:i:s');
...
->select("*")
->from('sales')
->where('return_date <=', $now)
->where_not_in('id',"(SELECT sale_Id FROM sales where sale_id IS NOT NULL)")
其中“s”是您正在测试的字符串。
请参阅How to check if a given string is a valid name for an item in a symbol table?
由于此工具在名称不合规时抛出异常,我更倾向于使用Regex属性来执行相同操作,例如:
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.");
}
但这就是我的问题,我不熟悉正则表达式。那么表达式将禁止这些字符:
\&LT;&GT; /“:; * |,=`
(允许空格)
感谢您的想法和帮助。 马特
答案 0 :(得分:0)
这个表达式:
[RegularExpressionAttribute(@"^[a-zA-Z \d_-]+$", ErrorMessage = "Certain special characters not allowed")]
似乎做了伎俩,我把它放在一起,但我觉得它没有明确地禁止字符,相反,它只允许某些字符。
如果有更简洁的答案,我会接受它。