60

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

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

在一个字符串中

4

4 回答 4

102

字符类 [^] 中的插入符号是大多数正则表达式实现(Perl、.NET、Ruby、Javascript 等)常见的否定运算符。所以我会这样做:

[^\W\s\d]
  • ^ - 匹配任何不在字符类中的内容
  • \W - 匹配非单词字符(单词字符将定义为 az、AZ、0-9 和下划线)。
  • \s - 匹配空格(空格、制表符、回车、换行)
  • \d - 匹配 0-9

或者,您可以采取另一种方法,只需包含您想要的内容:

[A-Za-z]

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

我不完全清楚您不想要哪些特殊字符。但我写出了这两种解决方案,以防万一一个比另一个更适合你。

于 2009-11-19T14:16:21.367 回答
2

在 Perl 中,它类似于:

$string !~ /[\d \W]/

当然,这取决于您对“特殊字符”的定义。\W匹配所有非单词字符。单词字符是任何字母数字字符加上空格字符。

于 2009-11-19T12:52:33.690 回答
-1

试试 ^[^0-9\p{P} ]$

于 2009-11-19T12:56:45.303 回答
-7
var StringInputToClean = @"[:(M)?*a',\y<>&a#~%{}+.@\\ /27!;$+]";

var pattern = @"[^a-zA-Z0-9\s]";

string replacement = "";

var result = Regex.Replace(StringInputToClean, pattern, replacement);
于 2014-06-16T12:31:24.357 回答