[英]C# How to filtered datatable rows which containing alphanumeric with special characters using Regex
我的C#数据表中有以下数据
我想要过滤包含字母数字和特殊字符的数据:
HOAUD039#
HOAUD00$
所以我在linq查询中尝试以下正则表达式:
var matches =
dt.AsEnumerable()
.Where(row => Regex.IsMatch(row["Empolyee_CRC"].ToString(),
"^[a-zA-Z0-9!@#$&()\\-`.+,/\"]*$"))
.CopyToDataTable();
这将同时返回字母数字结果和字母数字,其字符如下所示:
现在,我的问题很简单,很清楚,只有字母数字带有特殊字符才能显示结果的正确方法是什么。
我也尝试过此正则表达式,但它也不起作用^(?:[\\d,\\/().]*[a-zA-Z][a-zA-Z\\d,\\/().]*)?$
您可以根据将要使用的示例模式进行尝试
^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$&()\\-`.+,\/\"]).*$
说明
^
-字符串开始的锚点。 (?=.*\\d)
-检查至少一位数字的条件必须匹配。 (?=.*[A-Za-z])
-检查至少一个字符的条件必须匹配。 (?=.*[!@#$&()\\\\-
。+,/ \\“])`-检查至少一项特殊条件必须匹配。 .*
-匹配换行符以外的任何内容。 $
-字符串结尾。 在正则表达式中,您使用的是单个字符类,它将仅从多个字符类中选择一个,但是您有3个要求。
在第二个正则表达式中,由于*
和?
,所有内容都是可选的
您可以使用3个积极的前瞻性声明您的要求:
^(?=.*\d)(?=.*[!@#$&()`.+,\/\-])(?=.*[A-Z])[A-Z\d!@#$&()`.+,\/\-]+$
在C#中:
string pattern = @"^(?=.*\d)(?=.*[!@#$&()`.+,\/\-])(?=.*[a-zA-Z])[a-zA-Z\d!@#$&()`.+,\/-]+$";
这将匹配:
^
字符串的开头 (?=.*\\d)
一个数字 (?=.*[!@#$&()
。+,/-])`声明一个特殊字符 (?=.*[A-Za-z])
设置小写或大写字符 [A-Za-z\\d!@#$&()
。+,/-] +`仅匹配允许字符的1+倍 $
字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.