c# - 正则表达式允许某些特殊字符与括号一起使用

标签 c# asp.net regex regex-lookarounds

我正在 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/

相关文章:

javascript - JS RegEx 即使应该匹配也不匹配

asp.net - GridView1.HeaderRow.Cells[4].Text 和 GridView1.Columns[4].HeaderText 有什么区别?

asp.net - Facebook C# SDK : "Invalid signed request" exception when parsing fbsr cookie

c# - SaveAs 方法配置为需要有根路径,而路径 '~\\images\\594083964.jpg' 没有根

regex - 如何使用 grep 提取目录和子目录中所有文件中包含的所有 IP 地址?

javascript - 正则表达式匹配卡代码输入

c# - C#在lambda中过滤动态属性名称

c# - 如何在C#中获取昨天的日期

c# - NServiceBus 延迟消息处理

c# - 本地文件夹在 Windows 8 中消失