簡體   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