正则表达式长度验证:忽略开头和结尾的空白

本文关键字:开头 结尾 空白 验证 正则表达式 | 更新日期: 2023-09-27 18:02:25

我试图限制我们的用户每篇文章5到1024个字符。

我们目前正在使用asp.net RegularExpressionValidator。

如果我将表达式设置为以下内容,则可以正常工作:

body.ValidationExpression = string.Format("^[''s''S]{{{0},{1}}}$",
        MinimumBodyLength,
        MaximumBodyLength);

但是,这没有考虑换行和前导/尾/多个空格。所以用户可以输入这样的东西:Ok (三个空格)。(点),它仍然会被验证,因为三个空格算作字符。换行符也是如此。我们也可以打单。(点)后面加5个空格/换行符。

我已经尝试了多个正则表达式的变化,我在网上发现,但似乎没有一个完全符合我的需要。我希望它们最少输入5个字符,最多输入3000个字符,但我并不真正关心它们使用了多少换行符和空格。

为了澄清,我希望人们能够输入:

Hi,
My name is ben

我不希望他们能够输入:

Hi                  .

A              B

(大量换行或空格)

有可能正则表达式可能不是要走的路?如果是这样,我如何在正则表达式计算之前搜索和替换字符串(同时仍然在验证器中使用旧表达式捕获它)?

正则表达式长度验证:忽略开头和结尾的空白

使用下面的正则表达式:

body.ValidationExpression = string.Format("^(('S)|(('s+|'n+|('r'n)+)+'S)|('S('s+|'n+|('r'n)+))+){{{0},{1}}}$",
    MinimumBodyLength,
    MaximumBodyLength);

将任意数量的空白字符之后(或之前)的单个字符或单个字符视为单个实体。

如果我理解你的问题,你只想计数单词字符。如果是这样的话,您可以尝试这样做:

body.ValidationExpression = string.Format("^'w{{{0},{1}}}$",
MinimumBodyLength,
MaximumBodyLength);