[英]Regex to allow special characters
我需要一個正則表達式,以允許使用字母,連字符(-),引號('),點(。),逗號(,)和空格。 這就是我現在所擁有的
^[A-Za-z\s\-]$
謝謝
我從您的正則表達式中刪除了\\s
,因為您說的是空格,而不是空格。 隨意放回末尾的空格,用\\s
代替,否則很簡單:
^[A-Za-z\-'., ]+$
它匹配字符串的開頭。 集合中的任何字符1次或多次,並在字符串的結尾。 你不必逃脫.
如果您想知道的話。
您非常接近,請嘗試以下操作:
^[A-Za-z\s\-'.,]+$
請注意,我假設您要匹配包含這些字符中的任何一個或多個的字符串,因此我在字符類后添加了+
,表示“重復前一個元素一次或多次”。
請注意,由於\\s
可以匹配任何空白字符,因此除空格外,當前還允許使用制表符和換行符。 如果只想允許空格,請將其更改為^[A-Za-z \\-'.,]+$
(只需用空格替換\\s
)。
您可能嘗試過new RegExp("^[A-Za-z\\s\\-\\.\\'\\"\\,]$")
。但是,您在那里有一個字符串文字,反斜杠僅轉義了以下字符-必要僅用於分隔引號(和反斜杠)。
"^[A-Za-z\s\-\.\'\"\,]$" === "^[A-Za-zs-.'\",]$" === '^[A-Za-zs-.\'",]$'
但是,范圍s-.
是無效的。 因此,您需要轉義反斜杠以在RegExp構造函數中傳遞帶反斜杠的字符串:
new RegExp("^[A-Za-z\\s\\-\\.\\'\\\"\\,]$")
相反, 正則表達式文字更易於讀寫,因為您不需要字符串轉義正則表達式轉義字符。 同樣,它們在腳本“編譯”期間僅被解析一次-每次評估該行時都不需要執行任何操作。 僅當要動態構建RegExp
才需要使用RegExp
構造函數 。 所以用
/^[A-Za-z\s\-\.\'\"\,]$/
它會工作。 另外,您無需在字符類中轉義任何這些字符-只是
/^[A-Za-z\s\-.'",]$/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.