簡體   English   中英

正則表達式與數字和特殊字符,但沒有字母

[英]Regex with numbers and special characters but no letters

我正在制作一個接受帶有任何小數(0-9),+,*或#的輸入的正則表達式,但不應接受任何字母(az)。

所以數字就像

  • #192#
  • * 31#+ 32475728966
  • 0479266315
  • 32495959511

應該被接受。

當字符串中有任何字母時,正則表達式無效。

  • #192#abbef
  • a0479266315

這是我到目前為止的正則表達式:

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

我怎樣才能解決這個問題?

你可以用這個:

private const string PhoneNumberRegex = @"^[0-9*#+]+$";

其中^$是字符串開頭和結尾的錨點。

注意: RegexOptions.IgnoreCase

你需要用^ (行首)和$ (行尾)錨定你的字符串。 否則,如果匹配的任何部分匹配,則字符串匹配。

此外,您至少需要其中一個字符(您不希望匹配空字符串,因此您應該使用+ (一個或多個)。

最后,你可以用你的所有角色制作一個角色類: [\\d*#+]

把它們放在一起就可以了:

private const string PhoneNumberRegex = "^[\\d*#+]+$";

這意味着從字符串的開頭到結尾,您需要列出的一個或多個字符。

我相信這將滿足您的需求

private const string PhoneNumberRegex = @"^([0-9]|#|\+|\*)+$"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM