2010-12-08 98 views
0

我在這裏有一個問題,我比較新的RegularExpressionValidator。它接受所有字母數字,撇號,連字符,下劃線,空格,&符號,逗號,括號,句號。RegularExpressionValidator TextBox

我給出的答案是:

"^([a-zA-Z0-9 '-_&,()\.])+$" 

這似乎善於第一,但它似乎接受amoung其他事情「*」。

有人可以告訴我我在這裏有什麼錯嗎?

+1

這真的是你用過的嗎?你錯過了一個關閉的位置)(在開始時有一個開放的,不關閉) – 2010-12-08 20:54:15

+0

輸入它錯了。我現在編輯它,這就是我的。謝謝! – BigJim 2010-12-08 20:56:54

+0

當你舉出一個例子,每個角色都有特殊的含義時,你不應該把這個例子包裝在「」中。我們不清楚你是否在你的真實驗證器中使用它。我假設沒有。 – rtpHarry 2010-12-08 21:25:19

回答

2

問題似乎是破折號 - 在角色類中,如果未轉義,而不是在字符類的最後或最開始處,則表示範圍(A-Z將是您自己的正則表達式的一個很好的例子)。

因此'-_也被解釋爲一個範圍,並且ASCII 39(')和ASCII 95(_)之間的字符是()*+,-./0-9:;<=>[email protected][\]^

把短跑末,你應該罰款:

^[a-zA-Z0-9 '_&,().-]+$ 
0

因爲我也絆倒了這個事實,即在我最初的答案中使用了一個角色類,所以我挖掘了更多信息。發現下面的教程摘錄在http://www.regular-expressions.info/charclass.html

唯一特殊字符或 元字符一個字符 類是右括號內(]),所述 反斜槓()時,插入符號(^)和 連字符( - )。通常的元字符 是 字符類中的正常字符,並且不需要由反斜槓轉義的 。

\-轉義-應該可以解決您的問題。

1

你的性格類是不太正確的。這部分:'-_創建從撇號字符到下劃線字符的範圍。在ASCII表中,*字符介於兩者之間。你需要或者逃避連字符:

^([a-zA-Z0-9 '\-_&,()\.])+$ 

或移動到某個地方「小兒科」,如字符類的末尾:

^([a-zA-Z0-9 '_&,()\.-])+$ 
1

除了「-_問題涉及由其他人你也有錯誤的地方結束+。

在這個表達式的值捕獲組:

^([a-zA-Z0-9 '-_&,()\.])+$ 
在快報

是字符串中的最後一個字符。

如果你想捕捉的正則表達式中,整個事情,然後把後+直]像

^([a-zA-Z0-9 '-_&,()\.]+)$ 

如果你沒有打擾有關提取內捕獲的(價值),然後刪除()

^[a-zA-Z0-9 '-_&,()\.]+$ 
相關問題