我需要一个允许使用字母,连字符( - ),引号('),点(。),逗号(,)和空格的正则表达式。这就是我现在所拥有的
^[A-Za-z\s\-]$
由于
答案 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\-.'",]$/