检查字符串的一部分是否与正则表达式匹配

本文关键字:正则表达式 是否 字符串 一部分 检查 | 更新日期: 2023-09-27 18:00:49

我正在尝试根据各种正则表达式验证字符串;但是,如果空白字符被添加到字符串的结尾,它们就不再被标记。

if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^'+?[0-9'-'(')'.'/]{8,20}$")
{
    //Logic
}

在以下代码中;X值被标记,但Z值不被标记。

string x = "0337350670"; // Gets flagged
string z = "0337350670     "; // Does not get flagged

我应该更改正则表达式,还是有一种方法可以针对字符串的一部分进行验证?

检查字符串的一部分是否与正则表达式匹配

您只需Trim您的字符串即可从两边删除尾随空格。

此外,在一个字符类中,许多特殊的正则表达式字符不再特殊(-仍然是,但如果你这样放,它会被转义:[...-](。

Regex.IsMatch(literal.Value.ToString().ToLower().Trim(),
              @"^'+?[0-9()./-]{8,20}$"

删除^$也可以,但请注意,这将允许一行中包含20个以上数字的字符串:您不再检查最大长度(任何包含[0-9()./-]{8}都会匹配(。

从正则表达式中删除^$将允许表达式在字符串中的任何位置匹配。

您可以从字符串末尾删除$末尾字符并添加.*:

if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^'+?[0-9'-'(')'.'/]{8,20}.*")
{
    //Logic
}

现在它将同时匹配:Demo