我正在创建一个接受任何小数(0-9),+,*或#的输入的正则表达式,但不应接受任何字母(a-z)。
所以数字如
应该被接受。
当字符串中有任何字母时,正则表达式无效。
这是我到目前为止的正则表达式:
private const string PhoneNumberRegex = "((\\d)|(\\*)|(\\#)|(\\+))?";
private bool IsValid(inputString)
{
// Accept * # + and number
Match match = Regex.Match(inputString, PhoneNumberRegex, RegexOptions.IgnoreCase);
return match.Success;
}
但是这个正则表达式在#192#abbef
上也会返回true我该如何解决这个问题?
答案 0 :(得分:10)
您可以使用:
private const string PhoneNumberRegex = @"^[0-9*#+]+$";
^
和$
是字符串开头和结尾的锚点。
注意:不需要RegexOptions.IgnoreCase
。
答案 1 :(得分:3)
您需要使用^
(行首)和$
(行尾)锚定字符串。否则,如果任何部分匹配,则字符串匹配。
此外,您至少需要其中一个字符(您不希望匹配空字符串,因此您应该使用+
(一个或多个)。
最后,您可以在所有角色中制作角色类:[\d*#+]
。
把它们放在一起就可以了:
private const string PhoneNumberRegex = "^[\\d*#+]+$";
这意味着从字符串的开头到结尾,您需要一个或多个列出的字符。
答案 2 :(得分:0)
我相信这会满足您的需求
private const string PhoneNumberRegex = @"^([0-9]|#|\+|\*)+$"
答案 3 :(得分:0)
使用此:
const string MYRegex = @"^[0-9*#+]+$";
了解更多信息请访问
http://www.regexlib.com/Search.aspx?k=special%20characters&AspxAutoDetectCookieSupport=1
http://www.cisco.com/en/US/docs/ios_xr_sw/iosxr_r3.4/getting_started/installation/guide/gs34aexp.pdf