// 錯誤寫法
if (null != reg.IsMatch(model.FeedBack)) { ... }
// reg.IsMatch 返回 bool,永遠不為 null,條件恒真/恒假取決於邏輯
Regex.IsMatch 返回 bool(true/false),**絕不返回 null**。對 bool 進行 null 比較在 C# 中編譯錯誤(CS0019),若代碼能跑通說明變量類型非預期(如 bool? 或動態類型)。截圖顯示雙邊均為 null,實為調試器顯示誤導或變量未賦值。
// 1. 直接使用 bool 結果
if (reg.IsMatch(model.FeedBack)) {
// 匹配成功
}
// 2. 明確比較 true/false
if (reg.IsMatch(model.FeedBack) == true) { ... }
// 3. 空值檢查(針對字符串輸入)
if (!string.IsNullOrEmpty(model.FeedBack) && reg.IsMatch(model.FeedBack)) { ... }
reg.IsMatch(...) 實際返回值(true/false)。Watch 窗口輸入表達式驗證。model.FeedBack 是否為 null,先做字符串非空守衛。| 需求 | Pattern |
|---|---|
| 郵箱 | ^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$ |
| 手機號(中國) | ^1[3-9]\d{9}$ |
| 身份證(18位) | ^\d{17}[\dXx]$ |
| 中文 | ^[\u4e00-\u9fa5]+$ |
「null != null」是誤導性現象,核心修復:**直接使用 IsMatch 返回的 bool 值作為條件**,補全輸入字符串非空檢查。