正则表达式来排除所有字符,除了字母
我是一个真正的正则表达式的n00b,所以我问你的帮助: 我需要一个正则表达式匹配巫仅字母和数字,不包括punctations,非ASCII字符和空格。正则表达式来排除所有字符,除了字母
“ilike*2012”将是一个有效的字符串。
“f ###你的”无效。
“世界你好” 无效
“你好世界” 和 “*程序hello_world *” 无效
等。
我需要它做一个可能的复杂的业务名称URL友好。
在此先感谢!
试试这个:
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("[email protected]#[email protected]#");
这篇文章帮助我比我问的更多。这正是我必须要做的。 – Valerio 2012-07-13 14:33:43
以验证字符串,您可以使用下面的正则表达式与Regex.IsMatch
:
"^[0-9A-Za-z]+$"
说明:
-
^
是字符串anchor的开始。 -
[...]
是character class。 -
+
表示一个或多个。 -
$
是串锚的端部。
我需要它做一个可能的复杂的业务名称URL友好
然后要更换不匹配的字符。使用Regex.Replace
与以下正则表达式:
"[^0-9A-Za-z]+"
说明:
-
[^...]
是一个否定的字符类。
代码:
string result = Regex.Replace(input, "[^0-9A-Za-z]+" , "");
看到它联机工作:ideone
注意,不同的企业名称可以给同一个结果字符串。例如,名称只包含中文字符的企业将全部提供空字符串。
你可以使用下面的正则表达式。
^[a-zA-Z0-9]+$
\ w通常匹配'_'。 – 2012-07-13 14:24:47
谢谢!我错过了。更正了答案。 – 2012-07-13 14:27:29
谢谢!我不知道。 – 2012-07-13 14:37:21
这有什么错[:alnum:]
?这是一个posix标准。所以你的整个正则表达式是:^[:alnum:]+$
。
wikipedia article for regular expressions包含大量的例子和细节。
你不需要这样的正则表达式。
string s = "......"
var isValid = s.All(Char.IsLetterOrDigit);
-
我需要它做一个可能的复杂的业务名称URL友好
您还可以使用HttpUtility.UrlEncode
var urlFriendlyString = HttpUtility.UrlEncode(yourString);
他可以使用RegularExpressionValidator – 2012-07-13 14:25:32
这听起来好像您的应用程序,你不只是想要一个正则表达式来告诉你,如果输入的匹配与否,而是你要过滤的输入和得到的东西那更友善? – 2012-07-13 14:24:15