2011-02-04 94 views
3

我有这样的正则表达式,用于验证输入(在JavaScript),以确保用户在文本框没有进入超过1000个字符:正则表达式验证文本框长度

^.{0,1000}$ 

,如果你在输入文字作品确定一行,但是一旦你按下Enter并添加新行,就会停止匹配。我应该如何改变这个RegEx来解决这个问题?

回答

3

你希望是什么:

/^[\s\S]{0,1000}$/ 

的原因是,.将不匹配换行符。然而

一个更好的办法是不使用正则表达式和只使用<text area element>.value.length

+0

这个正则表达式我相信不会接受“垃圾”字符,我希望能够接受。 – Andrey

+0

它会接受一切'\ s'全部是空格,'\ S'全部是非空白,它们就是一切。但是,再次,不要使用正则表达式,这显然是错误的。 –

+0

你的建议工作,谢谢!但我仍不明白为什么这是错的。我意识到,如果我只是在JavaScript中进行比较,我应该已经使用了string.length方法;但我确实想使用内置的asp.net正则表达式验证器而不是编写代码,并且它不会执行那么糟糕。 – Andrey

3

如果你只是想验证输入的长度是不是很容易,只需验证字符串的长度?

if (input.length > 1000) 
    // fail validation 
6

问题是.与换行符不匹配。我想你可以使用这样的事情:

^[.\r\n]{0,1000}$ 

它应该工作(只要你not using m),但你真的需要这里正则表达式?为什么不使用.length property

强制性jwz quote

一些人,当遇到一个问题,认为“我知道,我将使用正则表达式。”现在他们有两个问题。


编辑:你可以使用一个CustomValidator检查长度,而不是使用正则表达式的。 MSDN有一个示例可用here

+0

我正在使用ASP.NET正则表达式验证器 – Andrey

+0

@Andrey使用适当的验证器。 – Will

+0

表示正则表达式不起作用。马丁建议的那个虽然做了,所以我都准备好了。 – Andrey