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