Regex以匹配字母数字和空格

本文关键字:数字 空格 Regex | 更新日期: 2023-09-27 17:47:47

我做错了什么?

string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^'s)", string.Empty);
// clean == "johns". I want "john s";

Regex以匹配字母数字和空格

只是一个仅供参考的

string clean = Regex.Replace(q, @"[^a-zA-Z0-9's]", string.Empty);

实际上会更像

string clean = Regex.Replace(q, @"[^'w's]", string.Empty);

这:

string clean = Regex.Replace(dirty, "[^a-zA-Z0-9'x20]", String.Empty);

''x20是ascii十六进制,表示"空格"字符

您可以添加更多希望被允许的单个字符。例如,如果您希望"?"在返回字符串中正常,请添加''x3f

我得到了:

string clean = Regex.Replace(q, @"[^a-zA-Z0-9's]", string.Empty);

不知道你可以把''s放在括号里

下面的正则表达式用于在文本框中包含空格。

Regex r = new Regex("^[a-zA-Z''s]+");
r.IsMatch(textbox1.text);

这对我来说很好。

我怀疑^在字符类之外的工作方式与您认为的不同。

你告诉它要做的是用一个空字符串或任何前导空格替换所有不是字母数字的东西。我想你的意思是,空格可以不替换——试着把''移到[]类中。

似乎有两个问题。

  1. 您在[]外使用的^与行首匹配
  2. 您没有使用*或+,这意味着您将只匹配一个字符

我认为您需要以下regex@"([^a-zA-Z0-9''s])+"

底部带有空格的正则表达式,支持来自不同区域性的所有键盘字母

 string input = "78-selim güzel667.,?";
 Regex regex = new Regex(@"[^'w'x20]|['d]");
 var result= regex.Replace(input,"");
 //selim güzel

方括号内的扬抑符表示除后续范围外的所有字符。你想要方括号外的扬抑符。

此正则表达式将帮助您筛选是否至少有一个字母数字字符和零个或多个特殊字符,即_(下划线)、'' s空格、-(连字符)

string comparer = "string you want to compare";
Regex r = new Regex(@"^([a-zA-Z0-9]+[_'s-]*)+$");
if (!r.IsMatch(comparer))
{
   return false;
}    
return true;

使用[a-zA-Z0-9]+为字母数字字符创建一个集合+"集合末尾的符号(量词)将确保comparer内至少有一个字母数字字符。

为特殊字符创建另一个集合[_'s-]**"量词用于验证comparer字符串中是否存在特殊字符。

将这些集合打包到捕获组([a-zA-Z0-9]+[_'s-]*)+中,表示comparer字符串应该占用这些特性。

[RegularExpression(@"^[A-Z]+[a-zA-Z""''s-]*$")]

以上语法也接受空格