2012-02-14 35 views
4

如果我嘗試匹配正則表達式字符串與變音符號(沿着^ [a-zA-Z0-9áàAÁÁ] {0,100} $的行),它將匹配Bhhhh在服務器端(我稱之爲相同的驗證兩次),但在客戶端將失敗。我已經改變了java類的構造,但它仍然不匹配。在GWT正則表達式中的Diacritcs

是否有一個特殊的gwt正則表達式用於變音符號或我錯過了什麼?

回答

1

奇怪,作爲回報/^[a-zA-Z0-9áàAÁÁ ]{0,100}$/.test('Báhhh')true我Chrome的JS控制檯。

我懷疑這是一個Unicode問題,其中á可以用幾種方式編碼:U + 0061 U + 0301,U + 0061 U + 0341或U + 00E1。

也許嘗試/^(?:[a-zA-Z][\u0301\u0341]?|[áàÁÁ0-9 ]){0,100}$/

+1

不,儘管它已經都工作地在控制檯說,在客戶端的GWT正則表達式不會以同樣的方式驗證! – user1021138 2012-02-14 15:22:50

+1

現在好了,它開始工作......我並沒有真正改變太多,我改變了課堂上的使用,但我確定我之前嘗試過,並沒有使它工作! – user1021138 2012-02-14 16:09:18

+0

請記住,GWT只將UTF-8作爲輸入。 – 2012-02-15 11:14:21

1

Java和JavaScript的正則表達式在實現上有差異,可能並不總是清晰可見。我建議你使用不同的驗證每個案例 - 看看在類RegExp in GWT

有兩個 實現之間的一些小的不兼容問題。正則表達式 語法中的Java特定結構(例如[az & & [^ bc]],(?< = foo),\ A,\ Q)僅適用於純Java Java實現,而不是GWT實現,也不會被拒絕 。另外, 替換表達式中的Javscript特有的構造函數$`和$'只能在GWT實現中使用,而不能在拒絕它們的純Java實現中使用。

相關問題