正则表达式允许文本,一些特殊字符并保持低于指定的长度

时间:2009-12-16 08:12:01

标签: asp.net regex validation

我正在尝试创建一个验证表达式,用于检查输入的长度并允许文本和标点符号(例如,?;:!“£$%)

到目前为止,我提出的是"^\s*(\w\s*){1,2046}\s*$",但这不允许任何标点符号。说实话,我在这个领域非常粗略,所以任何帮助都会非常感激!

谢谢,

史蒂夫

5 个答案:

答案 0 :(得分:7)

^[\w\s.,:;!?€¥£¢$-]{0,2048}$

^ - 字符串/行的开头
[] - 字符类
\w - 单词字符
\s - 空格字符
.,:;!?€¥£¢$- - 标点符号和特殊字符
{} - 重复次数(min,max)
$ - 字符串/行的结尾

答案 1 :(得分:1)

这应该这样做:

^\s*([\w,\?;:!"£$%]\s*){1,2046}$

请注意,这并不限制输入的长度,它只限制非空白字符的数量。

要限制长度,您可以使用仅与特定长度范围匹配的正向前瞻:

^(?=.{1,2046}$)\s*([\w,\?;:!"£$%]\s*)+$

(非空白字符数的上限如果与长度相同则毫无意义。+{1,}的缩写,需要至少一个非白色 - 空间特征。)

答案 2 :(得分:1)

如果您希望允许文字和标点符号,您希望排除哪些内容?数字? \ D将为您提供不是数字的所有内容

答案 3 :(得分:1)

您可能已经知道这一点,但是:防范恶意输入应该在服务器端处理,而不是在客户端进行表单验证。黑帽子不会撇开你的剧本。

我认为在大多数流行的Web前端框架中都有用于清理输入的库代码。单独使用一个简短的正则表达式来防范SQL注入攻击是非常脆弱的。

答案 4 :(得分:0)

此正则表达式应匹配所有字符并限制输入:

^\s*([\w\s\?\;\:\!\"£\$%]{1,2046})\s*$