[英]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;
}
謝謝。
你很接近,你需要逃避點和組合替代,以便^
和$
錨可以應用於它們:
@"^(?:\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.