当用户粘贴这样的东西时(例如来自记事本):
multi
line@email.com
进入输入文本框,换行符消失,它看起来像这样:
多 line@email.com
但无论转换为换行符与此正则表达式不匹配: ' \ S | \ T | \ r | \ N | \ 0''我' 所以这个无效字符通过js验证传递给我正在处理的.NET应用程序代码。 有趣的是,这个文本编辑器做了相同的转换,这就是为什么我必须将原始样本作为代码发布。我想知道换行符是什么,所以我可以为正则表达式添加一个文字,但我不知道如何。非常感谢!
以下是整个片段:
var invalidChars = new RegExp('(^[.])|[<]|[>]|[(]|[)]|[\]|[,]|[;]|[:]|([.])[.]|\s|\t|\r|\n|\0', 'i');
if (text.match(invalidChars)) {
return false;
}
答案 0 :(得分:1)
您的立即问题正在逃避。您正在使用字符串文字来创建正则表达式,如下所示:
'(^[.])|[<]|[>]|[(]|[)]|[\]|[,]|[;]|[:]|([.])[.]|\s|\t|\r|\n|\0'
但在它到达RegExp构造函数之前,[\]
变为[]
; \s
变为s
; \0
变为0
;并且\t
,\r
和\n
将转换为它们所代表的字符(分别为制表符,回车符和换行符)。如果您使用正则表达式文字而不会发生这种情况,但您仍然必须转义反斜杠以匹配文字反斜杠。
你的正则表达式也有更多括号而不是它需要。我认为这就是你想要的:
/^\.|\.\.|[<>()\\,;:\s]/
匹配开头的点,两个连续点,或几个禁止字符之一,包括任何空白字符(\s
匹配任何空格字符,而不仅仅是空格。)< / p>
答案 1 :(得分:0)
好的 - 这是
vbCrLF
这是粘贴的换行符转换为的内容。我添加了(vbCrLF)组,现在检测到这些空格。谢谢,Dan1M