正则表达式允许某些特殊字符和brakets

时间:2017-03-09 12:51:21

标签: c# asp.net regex regex-lookarounds

我正在使用asp.net,并且有许多字符串,我必须允许使用字母数字和一些特殊字符,例如 - > _ - [](){} ,. 我正在使用正则表达式

Regex name = new Regex("(a-zA-Z0-9 _ \[ \] \) \( \{ \} \-)*");
它不适合我。任何人都可以建议有效的正则表达式。

1 个答案:

答案 0 :(得分:3)

使用带锚点的字符类:

Regex name = new Regex(@"^[a-zA-Z0-9_[\])({}-]*$");

它只允许包含0 + ASCII字母,数字或_[])(,{{1}的字符串},{}符号。

请注意,在字符类中,-放置在字符类的开头/结尾时不必转义,否则必须转义它,就像转义-字符一样在上面的模式中。如果]位于.NET中字符类的开头,则不必对其进行转义,但是如果需要在客户端运行相同的正则表达式,则不能这样做,因为JS正则表达式需要{ {1}}要在字符类中转义。

如果您不想允许空字符串,请在]之前将]替换为*

+是字符串锚点的开头,$是字符串锚点的结尾。它们确保在字符串中不能使用除字符类中定义的字符之外的字符。