【问题标题】:RegEx Max and Min length characters for a Text Box文本框的正则表达式最大和最小长度字符
【发布时间】:2011-11-15 07:48:46
【问题描述】:

我使用 Asp.net 和 C#。

我需要强制用户在 TextBox 控件中添加 4 到 128 个字符的文本。

我想为验证控件使用 ValidationExpression 属性。

你能指出一个正确的正则表达式吗?

注意:我现在正在使用此代码,但如果文本框中有双空格或换行符,它似乎无法正常工作

ValidationExpression="^.{4,128}$"

感谢您抽出宝贵时间!

【问题讨论】:

    标签: asp.net regex validation


    【解决方案1】:

    你的表达是正确的。只需使用Singleline 修饰符,使点也匹配换行符。

    RegexOptions.Singleline
    

    或作为内联修饰符

    "^(?s)(.){4,128}$"
    

    RegexOptions Enumeration
    Regular Expression Options

    【讨论】:

    • 谢谢stema,很抱歉说清楚我应该使用这个版本还是^(.|\n|\r){4,128}$ 你作为评论发给我的?两者有什么区别?再次非常感谢
    • 我更喜欢答案中的版本。不同之处在于 Singleline 修饰符将 \r\n 包含到 . 中,而在另一个版本中,您可以通过显式写下来自己完成这项工作。我认为在你的简单情况下它是一个品味问题,但是当你有一个更大的表达式时,修饰符会更好,因为你不能忘记在某个地方写下换行符。
    【解决方案2】:

    句号或句点字符 (.) 称为点。它是一个通配符,可以匹配除换行符 (\n) 以外的任何字符。

    参考:http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx


    试试这个:

    ValidationExpression = "^(.|\n|\t){4,128}$"
    

    我也添加了标签 (\t)。

    告诉我它是否有效!

    【讨论】:

    • 点应该匹配除换行符 \r 和 \n 之外的任何单个字符。你为什么用 \r 代替?感谢您抽出宝贵时间
    • 好吧,在我的引文中只提到了\n。您可以添加它只是为了安全(.|\n|\r|\t){4,128}$。但是,这可能意味着 \r\n 都被视为一个字符。你可以试试这个:(.|(\n|\r|\r\n|\n\r)|\t){4,128}$。可能看起来很古怪,但我想它会完成这项工作!
    • 点匹配任何内容,但换行符除外。无需在您的表达式中添加\t。有^(.|\n|\r){4,128}$ 就足够了,不需要\n\r 交替排列,但当然每个都算作自己的角色。
    • 这就是为什么我添加了新行的所有可能性,以确保它们被视为一个字符而不是两个字符。通常我不会这样做,但为了他的项目,这是最好的方法。不过,您可能对标签是正确的。
    【解决方案3】:

    试试这个ValidationExpression = ^(\w*)(\s*)(.*){4,128}$" 它将涵盖句点和空格。

    【讨论】:

    • 您可能需要添加 \t.. 我不认为制表符被视为几个空格
    • \s 也包括标签。但是您的表达式首先只接受任意数量的 \w 字符,然后是任意数量的 \s 字符,然后是除换行符之外的任意数量的任何字符,并且在最后一部分您放置 {4,128} 量词(您接受 4 到 128 次任意任何字符的数量?)。这绝对不是 OP 想要的。
    • 谢谢...你的版本和stema的^(.|\n|\r){4,128}$有什么区别?
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多