我正在尝试定义一个正则以与正则表达式验证器一起使用,该正则表达式验证器将文本框的内容限制为仅字母数字字符、斜杠 (/)、哈希 (#)、左右括号 (())、句点 (.)、撇号 (')、引号 (")、连字符 (-) 和空格。
我在使用哈希和引号时遇到问题,其他限制正在起作用,但是当我插入其中一个字符时,评估失败并且我收到错误消息。我试图在没有并使用逐字记录的情况下转义这些字符,这是我最后一次尝试。
@"[ a-zA-ZÀ-ÿ/().\'-""#]"
对这些有什么想法吗?谢谢
正则表达式语言足够聪明,可以理解字符类中的句点和括号实际上是指字符,而不是它们通常出现在字符类之外时的模式。
在您的字符类中,您需要转义斜杠 ( \
) 和连字符 ( -
),仅此而已:
@"[ a-zA-ZÀ-ÿ/().\\'\-""#]"
如果您将连字符移动到字符类的末尾,您甚至不需要转义:
@"[ a-zA-ZÀ-ÿ/().\\'""#-]"
当然,这仍然只匹配一个字符。如果要确保整个字符串仅包含这些字符,则需要在字符类之后使用 start ( ^
) 和 end ( $
) 锚点和量词 ( *
or +
)。
我相信你的最终模式应该是这样的:
@"^[ a-zA-ZÀ-ÿ/().\\'""#-]*$"