我必须检查一个字符串是否包含特殊字符,但我可以在其中允许这 5 个特殊字符 .()_-
我把我的正则表达式写成
var specialCharacterSet = "^[()_-.]";
var test = Regex.Match("a!", specialCharacterSet);
var isValid = test.Success;
但它抛出一个:
error parsing "^[()_-.]" - [x-y] range in reverse order.
最佳答案
您已使用-
指定范围。放在最后:
[()_.-]
否则范围不正确:下界符号_
在字符表中出现的时间比上界符号晚。
:
此外,如果您打算检查字符串中的任何字符是否属于该集合,您应该删除仅在字符串开头检查的^
.
要测试字符串是否符合某种模式,请使用 Regex.IsMatch
:
Indicates whether the regular expression finds a match in the input string.
var specialCharacterSet = "[()_.-]";
var test = Regex.IsMatch("a!", specialCharacterSet);
更新
要接受任何不包含这五个字符的字符串值,您可以使用
var str = "file.na*me";
if (!Regex.IsMatch(str, @"[()_.-]"))
Console.WriteLine(string.Format("{0}: Valid!", str));
else
Console.WriteLine(string.Format("{0}: Invalid!", str));
参见 IDEONE demo
关于c# - 正则表达式允许一些特殊字符 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222646/