我正在 asp.net 上工作,并且有许多字符串,我必须允许使用字母数字和一些特殊字符,例如 -> _ - [ ] ( ) { } , . 我正在使用正则表达式,例如
Regex name = new Regex("(a-zA-Z0-9 _ \[ \] \) \( \{ \} \-)*");
它不适合我。任何人都可以建议有效的正则表达式吗?
最佳答案
使用带有 anchor 的字符类:
Regex name = new Regex(@"^[a-zA-Z0-9_[\])({}-]*$");
它只允许包含 0+ ASCII 字母、数字或 _
、[
、]
、)
的字符串>、(
、{
、}
和 -
符号。
请注意,在字符类内部,当放置在字符类的开头/结尾时,-
不必转义,否则必须对其进行转义,与 ]< 相同
char 在上面的模式中被转义。如果 ]
位于 .NET 中字符类的开头,则不必转义,但如果您需要在客户端运行相同的正则表达式,则无法执行此操作,因为 JS 正则表达式要求 ]
在字符类中进行转义。
如果您不想允许空字符串,请在 $
之前将末尾的 *
替换为 +
。
^
是字符串 anchor 的开始,$
是字符串 anchor 的结束。它们确保字符串中不能使用字符类中定义的字符以外的任何字符。
关于c# - 正则表达式允许某些特殊字符与括号一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695892/