我进行了以下正则表达式检查,以确保仅输入字母,数字和*
字符。
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_)
)。如果在字符类之外,其他字符(例如?
和.
)必须始终转义。注意
我已经对术语“字符组”的使用进行了编辑,因为有人正确地指出了这一点,尽管我试图清楚地进行描述,但它仍可能与“组”(捕获/不捕获)混淆。正则表达式可能会使我感到困惑,而无需我进一步弄糊涂。