我正在尝试根据各种正则表达式验证字符串;但是,如果将空白字符添加到字符串的 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
我应该更改正则表达式还是有办法验证字符串的一部分?
答案 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