我使用Asp.net和C#。
我需要强制用户在一个文本框控件中只输入4到128个字符的文本。
我想使用一个验证表达式属性用于验证控件。
你能指出一个正确的正则表达式吗?
注意:我现在正在使用这段代码,但如果文本框中有双空格或换行符,它似乎无法正常工作。
ValidationExpression="^.{4,128}$"
感谢您抽出时间阅读这篇文章!
我使用Asp.net和C#。
我需要强制用户在一个文本框控件中只输入4到128个字符的文本。
我想使用一个验证表达式属性用于验证控件。
你能指出一个正确的正则表达式吗?
注意:我现在正在使用这段代码,但如果文本框中有双空格或换行符,它似乎无法正常工作。
ValidationExpression="^.{4,128}$"
您的表达是正确的。只需使用Singleline
修饰符,使点号也匹配换行符。
RegexOptions.Singleline
"^(?s)(.){4,128}$"
ValidationExpression = "^(.|\n|\t){4,128}$"
我也添加了制表符(\t
)。
请告诉我是否有效!
\n
。你可以加上它以确保安全 (.|\n|\r|\t){4,128}$
。然而,这可能意味着\r
和\n
都被认为是一个字符。你可以尝试这个:(.|(\n|\r|\r\n|\n\r)|\t){4,128}$
。看起来有点奇怪,但我想它会完成工作! - Tim S.\t
。只需要使用^(.|\n|\r){4,128}$
即可,不需要在交替中列出\n
和\r
的排列组合,但是每个字符都会被计算。 - stema尝试使用这个 ValidationExpression = ^(\w*)(\s*)(.*){4,128}$"
它也会包括句号和空格。
\s
包括制表符。但是你的表达式只接受任意数量的 \w
字符,然后是任意数量的 \s
字符,最后是除换行符以外的任意字符,并在最后一部分放置 {4,128}
量词(你接受 4 到 128 次任意数量的任何字符?)。这绝对不是 OP 想要的。 - stema
\r\n
包含在.
中,而在另一个版本中,您需要通过显式编写它们来完成此工作。我认为在您的简单情况下,这是品味问题,但是当您有一个更大的表达式时,使用修饰符更好,因为您不能忘记在某个地方写下换行符。 - stema