我正在尝试创建一个验证表达式,用于检查输入的长度并允许文本和标点符号(例如,?;:!“£$%)
到目前为止,我提出的是"^\s*(\w\s*){1,2046}\s*$"
,但这不允许任何标点符号。说实话,我在这个领域非常粗略,所以任何帮助都会非常感激!
谢谢,
史蒂夫
答案 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*$