转义哈希并引用正则表达式

时间:2013-04-24 18:38:27

标签: c# .net regex escaping

我正在尝试定义一个常规用于正则表达式验证器,它将文本框的内容限制为仅包含字母数字字符,斜杠(/),哈希(#),左右括号(()),句点( 。),撇号('),引号(“),连字符( - )和空格。

我遇到了哈希和引用的麻烦,其他限制正在起作用,但当我插入其中一个字符时,评估失败并收到错误消息。我试图逃避这些角色,并且也使用了我最后一次尝试的逐字。

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

对这些有什么看法?谢谢

1 个答案:

答案 0 :(得分:3)

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

在你的角色类中,你需要转义斜杠(\)和连字符(-),但就是这样:

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

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

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

当然,这仍然只匹配一个角色。如果要确保整个字符串仅包含这些字符,则需要使用start(^)和end($)锚点和量词(*或{ {1}})在你的角色等级之后。

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

+