2

我在属性编辑器中输入了有效的正则表达式,但它不起作用。属性名称是regex,它肯定存在于 5.3 和 5.6 中(我有 5.5)。

我收到一个错误Uncaught TypeError: Object /^/content/trainingSite/(.*)$/ has no method 'test',从 javascript 调试器中看到,这this.regex是一个字符串。当然,字符串没有test方法。

由于属性编辑器中没有 RegExp 类型,并且 CQ 只是将小部件的值转储为字符串,因此它根本无法工作。我错过了什么吗?

4

3 回答 3

3

在 ExtJS 表单字段中,只有TextField具有regexandregexText属性。

ExtJS 表单字段的通用验证框架是vtypes(= 验证类型)

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一个选项允许您提供一个可选的掩码,该掩码在用户在字段中输入内容时实时验证。

相关问题

于 2013-05-27T17:37:47.270 回答
1

我有一个类似的问题,只是输入值会抛出一个控制台错误,说 .test 无效。当我以这种语法输入正则表达式值时,我的问题得到了解决:

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

来自 eclipse 并在 crxde-lite 中导入或如下所示:

Name:regex Type:String Value:new RegExp("/content/(.*)/(.*)/(.*)")
于 2015-09-16T19:07:54.473 回答
0

首先,我们可以使用String.prototype.match字符串参数。此外,至少在 AEM6 中,我们可以将正则表达式编写为两端带有斜杠的字符串文字:"/^\\/content\\/trainingSite\\/(.*)$/"它会正常工作。

于 2015-05-12T15:56:42.090 回答