Не asp.net или эксперт по валидации.Но классам символов нужны только определенные символы, например []
.Тире -
представляет диапазон символов.При использовании в качестве литерала его можно экранировать и помещать в любое место, а также в начало или конец класса ([-aa]
или [aa-]
) и рассматривать как литерал.Кроме того, знак вставки в начале класса обозначает «отрицательное» значение класса, любые символы, кроме этих ([^not me]
).
В классах могут быть другие конструкции со специальным синтаксисом, уникальным для конкретного механизма(.NET может быть так, я не уверен).Некоторые последовательности тоже вызывают подкласс.
Вот мои тесты с валидатором asp.net с использованием ваших специальных символов.Они могут быть относительными, я не уверен.Кажется, что оба не проверяют пустой ввод, это не может быть регулярным выражением.
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Input is not valid."
ValidationExpression="^.*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'"<>:;,\ ].*$"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
Похоже, что этот вопрос решает проблему безопасности, если таковая имеется.Обратите внимание на <+'alpha char'
, где «альфа» относится к диапазону допустимых символов Юникода в соответствии с некоторыми стандартами, которые я считаю.
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Input is not valid."
ValidationExpression="^(?!.*<(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'"<>:;,\ ].*$"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
Просто не обращайте внимания, если это слишком далеко.