[英]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.