c# - 正则表达式允许一些特殊字符 c#

标签 c# regex

我必须检查一个字符串是否包含特殊字符,但我可以在其中允许这 5 个特殊字符 .()_-

我把我的正则表达式写成

var specialCharacterSet = "^[()_-.]";
var test = Regex.Match("a!", specialCharacterSet);
var isValid = test.Success;

但它抛出一个:

error parsing "^[()_-.]" - [x-y] range in reverse order.

最佳答案

您已使用- 指定范围。放在最后:

[()_.-]

否则范围不正确:下界符号_在字符表中出现的时间比上界符号晚。:

enter image description here

此外,如果您打算检查字符串中的任何字符是否属于该集合,您应该删除仅在字符串开头检查的^ .

要测试字符串是否符合某种模式,请使用 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));

enter image description here

参见 IDEONE demo

关于c# - 正则表达式允许一些特殊字符 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222646/

相关文章:

c# - 如何在取消选中一个复选框时取消选中“全选”复选框

c# - 如何为 Cloudwatch 创建自定义文本格式化程序?

c# - 基于 NHibernate 查询中不同表的设置值

Python re.match 只匹配第一个\n

javascript - 正则表达式仅获取特定字符,之前/之后没有任何内容

mysql - MySQL 中的 PREG_REPLACE 和 PREG_REPLACE_EVAL

c# - ExecuteScript 上的 Selenium 超时

c# - 为什么这个单元测试会抛出 "Element not found"异常?

regex - 如何通过 ftp 连接获取字母数字大于 Linux 命令行 (bash) 中指定的文本的文件列表?

java - 在 Java 中对 (\d{4},\d{4}) 进行正则表达式