【发布时间】:2016-06-06 13:38:17
【问题描述】:
我知道这是非常基本且不彻底的验证,但文本框需要接受例如 name@email.com 以及 4556-222-44444。
我试过了
<asp:RegularExpressionValidator Display="Dynamic" runat="server" ControlToValidate="txtAddToBlacklist"
ErrorMessage="Invalid" ValidationExpression="^[\-\@]$"></asp:RegularExpressionValidator>
此尝试包括转义反斜杠无济于事。
我使用“[-@]”来检查是否存在的逻辑来自this answer。
我知道连字符必须在开头或结尾,但由于它只有两个字符,我认为这不是问题。
包含 ^ 和 $ 似乎是推荐的做法,以防止附加恶意附加内容。
一定是遗漏了一些东西,所以感谢您的帮助!
【问题讨论】:
-
如果不放^和$怎么办?事实上,您的正则表达式不允许任何其他字符,而不是属于字符类的字符。
-
@ConnorsFan 不幸的是,没有他们似乎没有任何区别。
-
可能是字符转义(我没有检查过)。您可以在各种网站上测试您的正则表达式,例如:regex101.com。它将允许您进行实验。 (在我看来,
[-@]有效)。 -
不应该是
^.*[-@].*$。^和$是字符串的开头和结尾,因此您需要介于两者之间的字符。否则你只是检查字符串“@”和“-”。 -
@H.deJonge 您提出的答案“^.*[-@].*$”有效,您想重新发布作为答案吗?不过,作为额外的,你知道如何使它适用于多行文本区域吗? (如包括新行)