我是一个真正的正则表达式n00b所以我问你的帮助: 我需要一个正则表达式,只匹配字母和数字,并排除标点符号,非ascii字符和空格。
“ilikestackoverflow2012”将是一个有效的字符串。
“ f ### you°§è ”无效。
“ hello world ”无效
“ hello-world ”和“ * hello_world * ”无效
等等。
我需要它来制作一个可能复杂的商业名称url友好。
提前致谢!
答案 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)
答案 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-@#$@#");