2013-04-01 43 views
2

我在屬性編輯器中輸入有效的RegExp,但它不起作用。 物業名稱是regex,它肯定存在於5.3和5.6(我有5.5)。我看到,是一個字符串。當然,字符串沒有test方法。是否可以在cq:Widget(textarea)中使用正則表達式字段?

由於在屬性編輯器中沒有RegExp類型,並且CQ只是爲字符串轉儲小部件的值,所以它不會按這種方式工作。我錯過了什麼嗎?

+0

我建議加上標籤[ExtJS的(HTTP ://stackoverflow.com/questions/tagged/extjs),因爲這不是CQ特定的。 –

+0

不,問題特定於CQ。在「普通」Ext中,我可以在config中編寫正則表達式,並且不會遇到像我遇到的那樣的問題。 – kirilloid

+0

在ExtJS中,只有TextField支持'regex'。你的問題似乎更廣泛;-) –

回答

3

在ExtJS表單字段中,只有TextField具有regexregexText屬性。

的ExtJS的表單字段的通用驗證框架是vtypes (= validation types)

var config = { 
    xtype: "textfield", 
    fieldLabel: "Path:", 
    vtype: "my_path_structure" 
} 

而且vtypes需要在CQ.Ext.form.VTypes註冊:

CQ.Ext.form.VTypes["my_path_structure"] = /^/content/trainingSite/(.*)$/; 
CQ.Ext.form.VTypes["my_path_structureText"] = "Invalid path"; 
  • 第一項(<name>)可以是函數或JavaScript正則表達式。
  • 驗證失敗時將顯示<name>Text條目。
  • 還有<name>Mask它允許您提供一個可選的掩模,在用戶進入現場時實時驗證。

Related question

+0

很好的解決方法,它比創建全新組件更好。 – kirilloid

0

首先,我們可以使用String.prototype.match和一個字符串參數。至少在AEM6中,我們可以將正則表達式寫成兩端都是斜槓的字符串文字:"/^\\/content\\/trainingSite\\/(.*)$/",它可以正常工作。

1

我有一個類似的問題,只是餵食的價值會拋出控制檯錯誤說。測試是無效的。

regex="new RegExp(&quot;/content/dam/(.*)/(.*)&quot;)" 

從Eclipse和進口或象下面這樣crxde-精簡版:當我喂在這句法正則表達式的值我的問題就解決了

Name:regex Type:String Value:new RegExp("/content/(.*)/(.*)/(.*)") 
相關問題