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

标签 c# regex

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

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

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

最佳答案

您可以修剪您的字符串以删除两侧的尾随空格。

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

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

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

关于c# - 检查字符串的一部分是否匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382688/

相关文章:

c# - 从 ActiveX 调用时未释放 WPF 内存

python - { } 量词如何工作?

javascript - 替换除 <strong>、</strong>、<b> 和 </b> 之外的所有 HTML 标记

javascript - 如果他们之前有文章,则丢弃正则表达式中的标记

c# - 如何将一系列名称分成不同的行

c# - Azure API App Swagger 无法从门户获得

c# - 在反序列化为 C# 对象之前验证 JSON

c# - GCHandle 获取 .net 对象的地址(指针)

c# - 如何从 Entity Framework 中获取架构名称?

c# - 替换字符串中第 N 个正则表达式匹配项