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

时间:2014-04-30 08:01:20

标签: c# regex

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

 
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

我应该更改正则表达式还是有办法验证字符串的一部分?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您只需Trim字符串即可从双方删除尾随空格。

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

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

删除^$也会有效,但要注意这将允许连续超过20位的字符串:您不再检查最大长度(任何包含 [0-9()./-]{8}会匹配)。

答案 2 :(得分:1)

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

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

现在它将匹配:Demo