0

我正在尝试定义一个正则以与正则表达式验证器一起使用,该正则表达式验证器将文本框的内容限制为仅字母数字字符、斜杠 (/)、哈希 (#)、左右括号 (())、句点 (.)、撇号 (')、引号 (")、连字符 (-) 和空格。

我在使用哈希和引号时遇到问题,其他限制正在起作用,但是当我插入其中一个字符时,评估失败并且我收到错误消息。我试图在没有并使用逐字记录的情况下转义这些字符,这是我最后一次尝试。

@"[ a-zA-ZÀ-ÿ/().\'-""#]"

对这些有什么想法吗?谢谢

4

1 回答 1

3

正则表达式语言足够聪明,可以理解字符类中的句点和括号实际上是指字符,而不是它们通常出现在字符类之外时的模式。

在您的字符类中,您需要转义斜杠 ( \) 和连字符 ( -),仅此而已:

@"[ a-zA-ZÀ-ÿ/().\\'\-""#]"

如果您将连字符移动到字符类的末尾,您甚至不需要转义:

@"[ a-zA-ZÀ-ÿ/().\\'""#-]"

当然,这仍然只匹配一个字符。如果要确保整个字符串仅包含这些字符,则需要在字符类之后使用 start ( ^) 和 end ( $) 锚点和量词 ( *or +)。

我相信你的最终模式应该是这样的:

@"^[ a-zA-ZÀ-ÿ/().\\'""#-]*$"
于 2013-04-24T18:40:36.220 回答