正则表达式排除除字母之外的所有字符

时间:2012-07-13 14:18:48

标签: c# regex

我是一个真正的正则表达式n00b所以我问你的帮助: 我需要一个正则表达式,只匹配字母和数字,并排除标点符号,非ascii字符和空格。

“ilikestackoverflow2012”将是一个有效的字符串。

f ### you°§è ”无效。

hello world ”无效

hello-world ”和“ * hello_world * ”无效

等等。

我需要它来制作一个可能复杂的商业名称url友好。

提前致谢!

7 个答案:

答案 0 :(得分:2)

要验证字符串,您可以将以下正则表达式与Regex.IsMatch一起使用:

"^[0-9A-Za-z]+$"

说明:

  • ^是字符串anchor的开头。
  • [...]character class
  • +表示一个或多个。
  • $是字符串锚点的结尾。

  

我需要它来制作一个可能复杂的商业名称url friendly

然后你想要替换不匹配的字符。将Regex.Replace与以下正则表达式一起使用:

"[^0-9A-Za-z]+"

说明:

  • [^...]是一个否定的角色类。

代码:

string result = Regex.Replace(input, "[^0-9A-Za-z]+" , "");

查看在线工作:ideone


请注意,不同的商家名称可以提供相同的结果字符串。例如,名称仅包含中文字符的商家都将提供空字符串。

答案 1 :(得分:2)

^[0-9a-zA-Z]+$

匹配一个或多个字母数字字符,不包含空格或非字母字符。

答案 2 :(得分:2)

您可以使用以下正则表达式。

^[a-zA-Z0-9]+$

答案 3 :(得分:2)

你不需要正则表达式。

string s = "......"
var isValid = s.All(Char.IsLetterOrDigit);

-

  

我需要它来制作一个可能复杂的商业名称url friendly

您也可以使用HttpUtility.UrlEncode

var urlFriendlyString = HttpUtility.UrlEncode(yourString);

答案 4 :(得分:1)

尝试

^[a-zA-Z0-9]+$

www.regexr.com是一个很好的资源。

答案 5 :(得分:1)

[:alnum:]出了什么问题?这是posix标准。所以你的整个正则表达式是:^[:alnum:]+$

wikipedia article for regular expressions包含大量示例和详细信息。

答案 6 :(得分:1)

试试这个:

var regex = new Regex(@"^[a-zA-Z0-9]+$");
var test = new[] {"ilikestack", "hello world", "hello-world", "###"};

foreach (var s in test)
   Console.WriteLine("{0}: {1}", s, regex.IsMatch(s));

编辑:如果你想要像@Andre_Miller这样的东西,你应该使用与Regex.Replace()相同的正则表达式;

Regex.Replace(s, @"[^a-zA-Z0-9]+", "")

OR

var regex = new Regex(@"^[a-zA-Z0-9]+$");
regex.Replace("input-string-@#$@#");