【发布时间】:2010-09-15 22:22:03
【问题描述】:
我在这里做错了什么?
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
【问题讨论】:
-
好吧,呃,我很笨 ^ 开头是……我累了。还是不知道怎么匹配一个空格
我在这里做错了什么?
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
【问题讨论】:
仅供参考
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 是 'space' 字符的 ascii 十六进制
您可以添加更多您希望被允许的单个字符。 如果您希望例如 "?" 在返回字符串中可以添加 \x3f。
【讨论】:
[^A-Za-z0-9 ?] 等简单的东西,您可以逐字输入它们。
我明白了:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
不知道你可以把 \s 放在括号里
【讨论】:
我怀疑 ^ 在字符类之外不能像你想象的那样工作。
您告诉它要做的是将所有不是字母数字的内容替换为空字符串或任何前导空格。我认为您的意思是空格可以不替换 - 尝试将 \s 移动到 [] 类中。
【讨论】:
以下正则表达式用于在文本框中包含空格。
Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);
这对我来说很好。
【讨论】:
[A-z\\s] 会不会比[a-zA-Z\\s] 容易?
似乎有两个问题。
我认为您想要以下正则表达式 @"([^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-]*$")]
以上语法也接受空格
【讨论】: