正则表达式允许特殊字符

时间:2013-06-24 17:28:11

标签: javascript regex

我需要一个允许使用字母,连字符( - ),引号('),点(。),逗号(,)和空格的正则表达式。这就是我现在所拥有的

^[A-Za-z\s\-]$ 

由于

3 个答案:

答案 0 :(得分:1)

我从你的正则表达式中删除了\s,因为你说的是​​空格,而不是空格。最后用\s替换最后的空格,随意将它放回去。否则很简单:

 ^[A-Za-z\-'., ]+$

匹配字符串的开头。集合中的任何字符都是1次或更多次,并且字符串结束。如果您想知道,则不必在集合中转义.

答案 1 :(得分:0)

你非常接近,请尝试以下方法:

^[A-Za-z\s\-'.,]+$

请注意,我假设您要匹配包含这些字符中的一个或多个的字符串,因此我在字符类之后添加了+,这意味着“重复前一个元素一次或多次”。 / p>

请注意,除了空格之外,目前还会允许制表符和换行符,因为\s将匹配任何空格字符。如果您只想允许空格,请将其更改为^[A-Za-z \-'.,]+$(仅用空格替换\s。)

答案 2 :(得分:0)

您可能已尝试new RegExp("^[A-Za-z\s\-\.\'\"\,]$")。但是,你有一个字符串文字,反斜杠只是转义以下字符 - 仅限于分隔引号(和反斜杠)。

"^[A-Za-z\s\-\.\'\"\,]$" === "^[A-Za-zs-.'\",]$" === '^[A-Za-zs-.\'",]$'

然而,范围s-. 无效。因此,您需要转义反斜杠以在RegExp构造函数中传递带反斜杠的字符串:

new RegExp("^[A-Za-z\\s\\-\\.\\'\\\"\\,]$")

相反,regex literals更容易读写,因为您不需要字符串转义正则表达式转义字符。此外,它们在脚本“编译”期间仅被解析一次 - 每次评估行时都不需要执行任何操作。如果要动态构建正则表达式,则只需要使用RegExp constructor。所以使用

/^[A-Za-z\s\-\.\'\"\,]$/

它会起作用。此外,您不需要在character class中转义任何这些字符 - 所以它只是

/^[A-Za-z\s\-.'",]$/