繁体   English   中英

当粘贴到文本输入正则表达式中的多行文本与空格不匹配时

[英]When multi-line text pasted into text input regex does not match the space

当用户粘贴这样的内容时(例如,从记事本中粘贴):

multi
line@email.com

到输入文本框中,该换行符消失了,看起来像这样:

多line@email.com

但是无论将换行符转换为哪个都与以下正则表达式不匹配:'\\ s | \\ t | \\ r | \\ n | \\ 0','i',因此此无效字符通过js验证传递给了我所使用的.NET应用程序代码正在努力。 有趣的是,此文本编辑器进行了相同的转换,这就是为什么我不得不将原始示例发布为代码的原因。 我想找出换行符转换为的内容,因此可以在正则表达式中添加文字,但我不知道如何。 非常感谢!

这是整个代码段:

var invalidChars = new RegExp('(^[.])|[<]|[>]|[(]|[)]|[\]|[,]|[;]|[:]|([.])[.]|\s|\t|\r|\n|\0', 'i');

if (text.match(invalidChars)) {
       return false;
}

您的直接问题正在逃避。 您正在使用字符串文字来创建正则表达式,如下所示:

'(^[.])|[<]|[>]|[(]|[)]|[\]|[,]|[;]|[:]|([.])[.]|\s|\t|\r|\n|\0'

但是在到达RegExp构造函数之前, [\\]成为[] \\s变成s ; \\0变为0 ; \\t\\r\\n转换为它们表示的字符(分别为制表符,回车符和换行符)。 如果您改用正则表达式文字,则不会发生这种情况,但仍必须转义反斜杠以匹配文字反斜杠。

正则表达式的括号也远远超出了需要。 我认为这是您想要的:

/^\.|\.\.|[<>()\\,;:\s]/

它与开头的点,两个连续的点或包括任何空白字符的禁止字符之一匹配( \\s任何空白字符匹配,而不仅仅是空格)。

好的-这是

vbCrLF

这就是粘贴的换行符被转换为的内容。 我添加了(vbCrLF)组,现在可以检测到那些空格。 谢谢,Dan1M

http://forums.asp.net/t/1183613.aspx?Multiline+Textbox+Input+not+showing+line+breaks+in+Repeater+Control

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM