簡體   English   中英

正則表達式允許特殊字符

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM