2017-06-22 62 views
0

我需要添加一些驗證字段,允許用戶輸入數字0的單個實例或只允許爲數字的10到11位數的電話號碼。RegularExpressionValidator with Or語句

我已經想出了通過在線測試儀下面的正則表達式,這似乎工作:

^0 {1} $ |^\ d {10,11} $

但是當我用它在我的代碼是這樣的:

foo= new RegularExpressionValidator() 
{ 
    ControlToValidate = controlID, 
    ValidationExpression = @"^0{1}$|^\d{10,11}$", 
    ErrorMessage = "Invalid input.", 
    Display = ValidatorDisplay.Dynamic 
}; 

驗證永遠不會觸發。以前它只是檢查確保它是一個只有10到11位數字的電話號碼,並且它工作正常,但添加零件也允許數字0的單個實例導致它永遠不會觸發。

那麼我怎麼能得到這個處理?

編輯:所以我只是做了一些額外的測試。它實際上似乎工作,但如果我完全空白領域它不會開火。現在我更加困惑......

+2

可以縮短你的正則表達式來'^ 0 $ |^\ d {} 10,100 $' - '{1}'什麼也不做的正則表達式。 – Samadi

+0

也許:'@「^(?: 0 | \ d {10,11})$」,' –

+0

@Samadi Gotcha,你可能想編輯你的評論,因爲你在最後一位做了10,100,而不是10 ,11。複製它來測試,它嚇壞了我,看看我能超越11位數字。 :P – MattD

回答

1

答案在這裏,基本上RegularExpressionValidator只測試一個非空字段,例如,它不會使該領域需要。您必須添加RequiredFieldValidator

https://stackoverflow.com/a/1085549/2557128

+0

是的,我在15分鐘前達成了這個實現/解決方法,並且工作。即將用同樣的方式回答,但是因爲在你能做到之前,你會得到所有要點。 :d – MattD