Asp.net (.|[\r\n]){11500}和^.{11500}之间的差异$
下面两个正则表达式的区别是什么 (.|[\r\n]){1,1500} ^.{1,1500}$ (.|[\r\n]){11500} ^.{1,1500}$Asp.net (.|[\r\n]){11500}和^.{11500}之间的差异$,asp.net,regex,Asp.net,Regex,下面两个正则表达式的区别是什么 (.|[\r\n]){1,1500} ^.{1,1500}$ (.|[\r\n]){11500} ^.{1,1500}$ 不匹配新行。不匹配新行。第一个匹配最多1500个字符,第二个(假设您没有设置某些正则表达式选项)匹配最多1500个字符的第一行,没有新行。第一个匹配最多1500个字符,第二个匹配最多1500个字符(假设您没有设置某些正则表达式选项)匹配最多1500个字符的第一行,无换行符。第一个表达式匹配一些第一个表达式匹配一些如果一行包含1500个字符或更
不匹配新行。
不匹配新行。第一个匹配最多1500个字符,第二个(假设您没有设置某些正则表达式选项)匹配最多1500个字符的第一行,没有新行。第一个匹配最多1500个字符,第二个匹配最多1500个字符(假设您没有设置某些正则表达式选项)匹配最多1500个字符的第一行,无换行符。第一个表达式匹配一些第一个表达式匹配一些如果一行包含1500个字符或更少,则第二个表达式匹配该行的前1500个字符行包含1500个字符或更少如果它用于RegularExpressionValidator,您可能需要使用以下正则表达式:
^[\s\S]{1,1500}$
这是因为正则表达式可以在服务器(.NET)或客户端(JavaScript)上运行。在.NET正则表达式中,可以使用RegexOptions.Singleline
标志(或其内联等价物,(?s)
)使点匹配新行,但JavaScript没有这种机制
[\s\s]
匹配任何空白字符或任何非空白字符的字符——换句话说,任何字符。这是最流行的用于匹配任何内容(包括JavaScript中的换行符)的习惯用法;它比基于交替的方法(如(.|\n)
的效率要高得多
请注意,如果您不希望用户将文本框保留为空,则仍然需要使用RequiredFieldValidator。如果它用于RegularExpressionValidator,则可能需要使用以下正则表达式:
^[\s\S]{1,1500}$
这是因为正则表达式可以在服务器(.NET)或客户端(JavaScript)上运行。在.NET正则表达式中,可以使用RegexOptions.Singleline
标志(或其内联等价物,(?s)
)使点匹配新行,但JavaScript没有这种机制
[\s\s]
匹配任何空白字符或任何非空白字符的字符——换句话说,任何字符。这是最流行的用于匹配任何内容(包括JavaScript中的换行符)的习惯用法;它比基于交替的方法(如(.|\n)
的效率要高得多
请注意,如果不希望用户将文本框留空,则仍需要使用RequiredFieldValidator。如果指定
RegeOptions.SingleLine
。如果指定RegeOptions,则需要使用SingleLine。如果指定RegeOptions,则SingleLine
可以匹配所有字符。SingleLine
e是一个细微的区别;第一个匹配最多1500个字符,第二个匹配最多1500个字符。我正在对ASP.NET的多行文本框使用此选项。在safari中查看此选项时,我收到错误“无效正则表达式:正则表达式太大”两个或只有一个?第一个是safari 3.0中的错误。我需要做的是,我需要限制用户输入超过1500个字符,并需要显示错误消息。我正在为此使用正则表达式验证器。因此,您可以使用(.|[\n]){11500}
(或使用regexOptions.Multiline
)。您在其他Safari浏览器中尝试过吗?
可以匹配所有字符,如果您指定RegexOptions.SingleLine
。但即使如此,还是有一个细微的区别:第一个匹配最多1500个字符,第二个匹配第一个最多1500个字符。我在Safari中查看时,正在对ASP.NET的多行文本框使用此选项我收到两个或其中一个的错误“无效正则表达式:正则表达式太大”?第一个是safari 3.0中的错误。我需要做的是,我需要限制用户输入超过1500个字符,并需要显示错误消息。我正在为此使用正则表达式验证程序。因此您可以使用(.|[\n]){11500}
(或使用regexOptions.Multiline
)。您是否在其他Safari浏览器中尝试过?…并且它(第二个)仅在字符串完全不包含换行符或选项regexOptions时才会这样做。设置Multiline
,因为在其他情况下,$
表示“字符串结束”而不是“行结束”.Ooo.感谢您捕捉到这一点……并且它(第二个)只有在字符串完全不包含换行符或者选项RegexOptions时才会这样做。设置多行
,因为否则,$
表示“字符串结束”,而不是“行结束”哦,谢谢你能听到。不要说第一个,但要说全部。不要说第一个,但要说全部。