正则表达式中的否定字符

nim*_*imi 38 regex regex-negation

我如何编写符合以下条件的正则表达式?

  • 没有数字
  • 没有特殊字符
  • 空间不足

在一个字符串中

Ste*_*ham 76

字符类[^]内的插入符号是大多数正则表达式实现(Perl,.NET,Ruby,Javascript等)常用的否定操作符.所以我这样做:

[^\W\s\d]
Run Code Online (Sandbox Code Playgroud)
  • ^ - 匹配字符类中没有的任何内容
  • \ W-匹配非单词字符(单词字符将被定义为az,AZ,0-9和下划线).
  • \ s - 匹配空格(空格,制表符,回车符,换行符)
  • \ d - 匹配0-9

或者你可以通过简单地只包括你想要的东西来采取另一种方法:

[A-Za-z]
Run Code Online (Sandbox Code Playgroud)

这里的主要区别是第一个将包括下划线.那,它展示了一种用您正在思考的相同术语编写表达式的方法.但是如果你反过来想要包含字符而不是排除它们,那么这有时会导致更容易阅读正则表达式.

我不完全清楚你不想要哪些特殊字符.但我写出了两种解决方案,以防万一对你来说比另一种更好.