【发布时间】:2020-08-18 20:37:27
【问题描述】:
大家好,在我的桌面应用程序中,我想创建正则表达式模式以允许用户仅插入 LETTRRS、NUMBERS 和 _ - .。
示例:
公司名称只能包含以下字符:
- TestCompany1
- Second_Compay
- 最佳公司 123
- My-Company d.o.o
- Stack.Oveflow-Company_
我的尝试:
string companyName = "My Company #%";
if(Regex.IsMatch(companyName, @"^[a-zA-Z0-9_.-]+$"))
{
MessageBox.Show("Company name contain invalid characteds");
}
else
{
// success
}
但这不起作用。
我只需要那个用户只能输入:
字母、数字、点、下划线、- 和单词之间的特殊字符以及名称中不允许的所有其他特定字符。
我在正则表达式模式中有错误吗?
【问题讨论】:
-
这是逻辑错误。
if(Regex.IsMatch(companyName, @"^[a-zA-Z0-9_.-]+$"))然后成功否则错误 -
可能是这样的
^[a-zA-Z0-9_]+(?:[-.][a-zA-Z0-9_]+)*(?: [a-zA-Z0-9_]+(?:[-.][a-zA-Z0-9_]+)*)*$regex101.com/r/HdJuw4/1 -
@第四只鸟感谢人,这是我需要的模式。我测试并且这项工作。您可以发布作为答案,我会接受。
-
如果你没有修复你的程序逻辑,任何“正确”的正则表达式都不会起作用。您还忘记在您的模式中添加空格
\s。