将散列和引号转义为正则表达式

本文关键字:转义 正则表达式 | 更新日期: 2023-09-27 18:10:56

我正在尝试定义一个正则表达式验证器,它将文本框的内容限制为只有字母数字字符,斜杠(/),散列(#),左右括号(()),句号(.),撇号('),引号("),连字符(-)和空格。

我在哈希和引用方面遇到了麻烦,其他限制正在工作,但是当我插入其中一个字符时,评估失败,我得到错误消息。我已经尝试过转义这些字符,但没有,也没有使用逐字转义,这是我最后一次尝试。

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

有什么想法吗?谢谢你

将散列和引号转义为正则表达式

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

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

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

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

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

当然,这仍然只匹配一个单个字符。如果您想确保整个字符串仅由这些字符组成,则需要在字符类之后使用开始(^)和结束($)锚和量词(*+)。

我认为你的最终图案应该是这样的:

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