如何使用IsMatch正则表达式不匹配字符

本文关键字:不匹配 字符 正则表达式 IsMatch 何使用 | 更新日期: 2023-09-27 18:03:09

我尝试检查字符串是否包含任何字符,但'''和'^'是不允许的。

Regex nameValidator = new Regex("^[''^]+$"); 

这行不通:

!nameValidator.IsMatch(myString)

为什么?

如何使用IsMatch正则表达式不匹配字符

因为字符类的^ inside与outside的含义不同。它意味着阶级角色的否定。我的正则表达式将允许除'^以外的所有元素

Regex nameValidator = new Regex(@"^[^^'']+$");

试试:

Regex nameValidator = new Regex(@"^[^'^'']+$");
string sample_text = "hello world";
bool isMatch = nameValidator.IsMatch(sample_text); // true
sample_text = @"Hello ^  'world ";
isMatch = nameValidator.IsMatch(sample_text); // false

'转义c#中字符串字面值的反斜杠。因此你的正则表达式(正则表达式引擎看到的)是

^['^]+$

这是有效的,但不是您想要的。(被反斜杠转义)改变:

new Regex("[''''''^]+");

或在字符串字面值前使用@(推荐)

new Regex(@"['''^]+"); 

必须转义反斜杠和插入符号,所以是三个反斜杠。要在没有@的字符串字面值中使用它们,必须再次转义每个反斜杠,这样就有六个反斜杠。