簡體   English   中英

正則表達式C#

[英]Regular Expressions C#

我知道有很多關於制作正則表達式的問題,但它們似乎都只是一個問題而不是一般用法。 我也有一個問題要解決。 我試着通過閱讀正則表達式來學習,但它很快就變得棘手。 這是我的問題:

C#

我需要驗證同一表單上存在的兩個文本框。 我編碼的數學運算可以處理任何浮點數。 對於這個特定的應用程序,我知道數字將處於三種格式或代表用戶有錯誤。 如果一個額外的號碼被意外輸入或者輸入太早等,我想在例子中防止這些錯誤。

以下是格式:“#。####”“##。####”“###。##”其中“#”表示必填數字。 以一位或兩位數整數開頭的格式必須有4個或更多的尾隨數字。 我把它限制在8,或者我試圖大聲笑。從三位數整數開始的格式永遠不應該允許有兩位數以上的小數。

這是我到目前為止所嘗試的內容。

    Regex acceptedInputRegex = new Regex(@"^\b[0-9]{3}.[0-9]{2}|[0-9]{1,2}.[0-9]{4,8}$");

    Regex acceptedInputRegex = new Regex(@"^\b\d{3}.\d{2} | \d{1,2}.\d{4,8}$");

我已經嘗試過,我認為匹配是我想要實現的,並且好像與我的否定表達相匹配意味着存在問題。 我在兩次嘗試都沒有成功。 這是代碼:

    if (acceptedInputRegex.IsMatch(txtMyTextBox1.Text) || acceptedInputRegex.IsMatch(txtMyTextBox2.Text))
            {

            } else
            {
                MessageBox.Show("Numbers are not in the right format", "Invalid Input!");
                return;
            }
  1. 正則表達式是我應該用來解決這個問題的嗎?
  2. 如果沒有,請告訴我你的建議。 如果是這樣,請幫我糾正我的正則表達式。

謝謝。

你很接近,你需要逃避點和組合替代,以便^$錨可以應用於它們:

@"^(?:\d{3}\.\d{2}|\d{1,2}\.\d{4,8})$"

請參閱正則表達式演示

細節

  • ^ - 字符串的開頭
  • (?: - 與兩個備選方案中的任何一個匹配的非捕獲組的開始:
    • \\d{3}\\.\\d{2} - 3位數, . 和2位數
    • | - 要么
    • \\d{1,2}\\.\\d{4,8} - 1或2位數, . ,4到8位數
  • ) - 非捕獲組的結束
  • $ - 結束字符串。

要使\\d僅匹配ASCII數字,請使用RegexOptions.ECMAScript選項:

var isValid = Regex.IsMatch(s, @"^(?:\d{3}\.\d{2}|\d{1,2}\.\d{4,8})$", RegexOptions.ECMAScript);

暫無
暫無

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

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