我正在嘗試使用數字ID字段的正則表達式驗證器。該字段必須是任何數字的必填字段。目前,我正在使用:正則表達式驗證器,必填字段
="\d{1,}"
不應該這樣做,所以用戶必須至少輸入1位數?如果我點擊提交按鈕的字段爲空,它會通過驗證併發回..但是如果我輸入非數字字符,它的錯誤很好。如果我想要零次或多次出現,我會使用:="(\d{1,})?"
爲什麼不能正常工作?我是否需要結合使用必需的字段驗證程序?這將吸> <
我正在嘗試使用數字ID字段的正則表達式驗證器。該字段必須是任何數字的必填字段。目前,我正在使用:正則表達式驗證器,必填字段
="\d{1,}"
不應該這樣做,所以用戶必須至少輸入1位數?如果我點擊提交按鈕的字段爲空,它會通過驗證併發回..但是如果我輸入非數字字符,它的錯誤很好。如果我想要零次或多次出現,我會使用:="(\d{1,})?"
爲什麼不能正常工作?我是否需要結合使用必需的字段驗證程序?這將吸> <
確保你請將屬性ValidateEmptyText
設置爲true
,否則CustomValidator
將不會觸發空文本。
編輯:你可以附加一個JavaScript函數到CustomValidator
來完成這個,因爲我不認爲RegularExpressionValidator
會觸發一個空的控件。我已經創建了一個基本示例來說明解決方案:
<script type="text/javascript">
function CheckMyText(sender, args) {
var compare = RegExp("\\d{1,}");
args.IsValid = compare.test(args.Value);
return;
}
</script>
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:Button ID="btnTest" runat="server" Text="Test" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Error!"
ControlToValidate="txtTest" ValidateEmptyText="true"
ClientValidationFunction="CheckMyText"></asp:CustomValidator>
我測試了它,它似乎工作。如果您需要更多幫助,請留下評論。
這是一個RegularExpressionValidator – 2011-02-22 23:51:56
尼斯..感謝。確切地說,我需要:) – 2011-02-23 17:45:17
嗯,實際上它不適用於特殊字符。 「4/5」,「3#」,「4'5」全部通過驗證..這是爲什麼? – 2011-02-23 18:58:28
我不知道在哪裏的用戶正在輸入的ID,但如果輸入字段TextBox控件你爲什麼不使用這樣的事情:
if (tbID.Text.Length != 0)
{
//Logic goes here
}
我寧願擁有它,以便它可以驗證沒有回發。我知道我可以使用JavaScript ..但一個regularexpressionvalidator應該能夠照顧這對我... – 2011-02-22 23:52:59
我沒有看到任何其他解決方案,但一個RequiredFieldValidator ...讓我們等待比我更有經驗的人。 ;) – 2011-02-22 23:54:37
正確的你是大聲笑 – 2011-02-23 17:21:14
您仍然需要使用RequiredFieldValidator。
+1我害怕這一點。 Kelsey向我展示了一個自定義驗證工具:) – 2011-02-23 17:45:56
當用戶點擊提交時,你需要確保不僅空的字符串被捕獲,下面是一個正則表達式,用於查找任何空格(製表符,空格等)+匹配如果字符不是數字(0-9)
Dim FoundMatch As Boolean
Try
FoundMatch = Regex.IsMatch(SubjectString, "\Dm/rld$/\s", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
'put your code here
Catch ex As ArgumentException
'syntax error in regular expression
End Try
我相信你將需要使用回發你的頁面上,如果你決定使用的RequiredFieldValidator你可以使用正則表達式以上表達式爲以及
H個
萬一有人不使用CustomValidator
那麼你可以有對於相同的控制,使用RequiredFieldValidator
和RegularExpressionValidator
。在這裏找到這個解決方案:http://forums.asp.net/t/1230931.aspx。通常,這會導致錯誤消息被第二個驗證程序取代,但有一種方法可以解決此問題。您只需將Display
屬性設置爲dynamic
即可。現在,兩個驗證器的錯誤消息都顯示在相同的位置。示例代碼:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="ErrorMsg" ControlToValidate="controlID"
ValidationExpression="regexExpression"
Display="Dynamic"></asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ErrorMessage="ErrorMsg" ControlToValidate="controlID"
Display="Dynamic"></asp:RequiredFieldValidator>`
我不是正則表達式大師,但嘗試\ d + – berkay 2011-02-22 23:49:25
對不起,我試過了。它沒有改變任何東西 – 2011-02-22 23:51:36
這個呢? 「^ \ d {0,9} $」 – berkay 2011-02-22 23:53:18