1

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

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

谢谢

4

3 回答 3

1

\s从你的正则表达式中删除了,因为你说的是​​空格,而不是空格。随意将其放回原处,将末尾的空间替换为\s否则非常简单:

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

它匹配字符串的开头。集合中的任何字符 1 次或多次,以及字符串的结尾。如果您想知道,您不必.在一组中逃脱。

于 2013-06-24T17:34:53.847 回答
0

您非常接近,请尝试以下操作:

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

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

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

于 2013-06-24T17:35:02.117 回答
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\\-\\.\\'\\\"\\,]$")

相反,正则表达式文字更易于阅读和编写,因为您不需要对正则表达式转义字符进行字符串转义。此外,它们仅在脚本“编译”期间被解析一次 - 每次评估该行时都不需要执行任何操作。仅当您想动态构建正则表达式时才需要使用RegExp构造函数。所以使用

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

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

/^[A-Za-z\s\-.'",]$/
于 2013-06-24T17:43:08.180 回答