我必须检查一个字符串是否包含特殊字符,但我可以在其中允许这 5 个特殊字符 .()_-
我已经将我的正则表达式写为
var specialCharacterSet = "^[()_-.]";
var test = Regex.Match("a!", specialCharacterSet);
var isValid = test.Success;
Run Code Online (Sandbox Code Playgroud)
但它抛出一个:
错误解析 "^[()_-.]" - [xy] 范围以相反的顺序。
您已使用 指定了一个范围-。放在最后:
[()_.-]
Run Code Online (Sandbox Code Playgroud)
否则范围不正确:下界符号_在字符表中出现的晚于上界符号.:
此外,如果您打算检查字符串中的任何字符是否属于该集合,则应^仅在字符串的开头删除该检查。
要测试字符串是否符合某种模式,请使用Regex.IsMatch:
指示正则表达式是否在输入字符串中找到匹配项。
var specialCharacterSet = "[()_.-]";
var test = Regex.IsMatch("a!", specialCharacterSet);
Run Code Online (Sandbox Code Playgroud)
更新
要接受不包含五个字符的任何字符串值,您可以使用
var str = "file.na*me";
if (!Regex.IsMatch(str, @"[()_.-]"))
Console.WriteLine(string.Format("{0}: Valid!", str));
else
Console.WriteLine(string.Format("{0}: Invalid!", str));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5389 次 |
| 最近记录: |