我进行了以下正则表达式检查,以确保仅输入字母,数字和*字符。

Regex.IsMatch(searchString, @"^[a-zA-Z0-9*]+$")


但是,我想将其扩展为也接受( ) [ ]字符。到目前为止,这是我尝试过的方法,但是返回的是false:

Regex.IsMatch(searchString, @"^[a-zA-Z0-9[]()*]+$")


有人可以提出解决方案吗?

最佳答案

\进行转义:

Regex.IsMatch(searchString, @"^[a-zA-Z0-9\[\]()*]+$")


应该注意的是,转义规则因字符是否在字符类(即[_chars_])内而不同。

例如,-(必须转义到字符类之外的\(,因为否则它表示组的开始(即(_something to capture_))。如果在字符类之外,其他字符(例如?.)必须始终转义。

注意

我已经对术语“字符组”的使用进行了编辑,因为有人正确地指出了这一点,尽管我试图清楚地进行描述,但它仍可能与“组”(捕获/不捕获)混淆。正则表达式可能会使我感到困惑,而无需我进一步弄糊涂。

10-01 09:21