【问题标题】:RegEx For Multiline ASP.NET Textbox多行 ASP.NET 文本框的正则表达式
【发布时间】:2010-02-16 21:04:59
【问题描述】:

我想防止两个字符一起输入,但我希望用户能够输入一个或另一个以及使用回车键。我想使用白名单而不是黑名单字符。正则表达式还需要支持最小和最大长度。我正在使用 asp:regularexpression 控件进行客户端验证。我不想进行服务器端验证,除非这是解决此问题的唯一方法。有没有其他人遇到过这个?提前感谢您的帮助。

这是我目前使用的正则表达式:

(?!.())^[a-zA-Z0-9!@#$%^&_=+~''"";:, \r\n .()\?-]{1,1000}$

我正在使用一个设置为多行的 asp.net 文本框,所以我必须允许 \r 和 \n 或者使用多行文本框有什么意义:)

我想阻止用户一起输入 ,但允许他们输入带有 & 或 # 的文本,并允许所有字符 a-zA-Z0-9!@#$%^&*_=+ ~''"";:, \r\n.()\?-.

一个有效的文本条目如下:

我对我的订单有疑问。 订单号为 12345。 你能帮帮我吗?

无效的文本条目如下:

我试图阻止用户 在文本框中输入 , 但我想让他们输入 & 或 #。

【问题讨论】:

  • Enter 键与它无关,文本框中不能有新行。至于你的问题——什么?!一些示例会有所帮助。

标签: asp.net regex


【解决方案1】:

string pattern = @"^(?!.*&#).{1,1000}$"

这断言字符串不包含 组合,否则允许长度在 1 到 1000 个字符之间(包括 1 到 1000 个字符)。如果您真的想要白名单,请将{ 前面的. 替换为您的白名单字符类(在[] 内)。

【讨论】:

  • 关闭但仍然无法正常工作 - 确实阻止了 但不允许返回键,因为这是一个多行文本框,因此是键
  • 模式是正确的。你必须指定RegexOptions.Singleline
  • RegExOptions 不适用于正则表达式控件。我们不进行服务器端验证。
  • 看看这是否有效(我还没有测试过):^(?!(?:.|\s)*&#)(?:.|\s){1,1000}$
【解决方案2】:

这应该适合你:

string pattern = @"^(?![\s\S]*&#)[\s\S]{1,1000}$"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多