【问题标题】:Regex to allow certain special characters along with brakets正则表达式允许某些特殊字符以及括号
【发布时间】:2017-03-09 12:51:20
【问题描述】:

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

这样的正则表达式
Regex name = new Regex("(a-zA-Z0-9 _ \[ \] \) \( \{ \} \-)*");

它不适合我。任何人都可以建议有效的正则表达式。

【问题讨论】:

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


    【解决方案1】:

    使用带有锚点的字符类:

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

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

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

    如果您不想允许空字符串,请将@​​987654334@ 替换为+$ 之前的末尾。

    ^ 是字符串锚的开始,$ 是字符串锚的结束。他们确保字符串中不能使用除字符类中定义的字符以外的字符。

    【讨论】:

    • 请注意,字符类中的空格是有意义的,仅包含一次如果您还想匹配(“允许”)空格。
    • 谢谢,它对我有用。还要补充。并且,在正则表达式中,我在 - 之前添加了这些字符
    • @AmanChauhan:是的,或者转义-,不用担心在哪里添加.,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2019-03-06
    • 2015-10-06
    相关资源
    最近更新 更多