在 Adobe CQ5 中设置正则表达式以验证 URL 格式
Setting regular expression to validate URL format in Adobe CQ5
我想使用 Adobe CQ5 验证文本字段内的 URL,所以我像往常一样设置属性 regex 和 regexText,但由于某些原因不起作用:
<facebook
jcr:primaryType="cq:Widget"
emptyText="http://www.facebook.com/account-name"
fieldDescription="Set the Facebook URL"
fieldLabel="Facebook"
name="./facebookUrl"
regex="/^(http://www.|https://www.|http://|https://)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$/"
regexText="Invalid URL format"
xtype="textfield"/>
所以当我在组件内部输入时,我可以在控制台看到一条错误消息:
Uncaught TypeError: this.regex.test is not a function
更准确地说,错误来自这一行:
if (this.regex && !this.regex.test(value)) {
我尝试了几个正则表达式,其中 none 行得通。我想问题出在正则表达式本身,因为另一方面我有另一个正则表达式来评估电子邮件地址,它工作得很好:
/^[A-za-z0-9]+[\._]*[A-za-z0-9]*@[A-za-z.-]+[\.]+[A-Za-z]{2,4}$/
有什么建议吗?提前致谢。
您的正则表达式的语法似乎将正斜杠 (/) 视为特殊字符。由于您想解析包含斜杠的 URL,我猜您应该像这样将它们转义两次:'\\/' 而不是 '/'。结果将是:
/^(http:\/\/www.|https:\/\/www.|http:\/\/|https:\/\/)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/
您需要将它们转义两次,因为要编译为正则表达式的 字符串 必须包含 '\/' 以转义斜杠,但要在字符串中引入反斜杠,您也必须转义反斜杠本身。
我想使用 Adobe CQ5 验证文本字段内的 URL,所以我像往常一样设置属性 regex 和 regexText,但由于某些原因不起作用:
<facebook
jcr:primaryType="cq:Widget"
emptyText="http://www.facebook.com/account-name"
fieldDescription="Set the Facebook URL"
fieldLabel="Facebook"
name="./facebookUrl"
regex="/^(http://www.|https://www.|http://|https://)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$/"
regexText="Invalid URL format"
xtype="textfield"/>
所以当我在组件内部输入时,我可以在控制台看到一条错误消息:
Uncaught TypeError: this.regex.test is not a function
更准确地说,错误来自这一行:
if (this.regex && !this.regex.test(value)) {
我尝试了几个正则表达式,其中 none 行得通。我想问题出在正则表达式本身,因为另一方面我有另一个正则表达式来评估电子邮件地址,它工作得很好:
/^[A-za-z0-9]+[\._]*[A-za-z0-9]*@[A-za-z.-]+[\.]+[A-Za-z]{2,4}$/
有什么建议吗?提前致谢。
您的正则表达式的语法似乎将正斜杠 (/) 视为特殊字符。由于您想解析包含斜杠的 URL,我猜您应该像这样将它们转义两次:'\\/' 而不是 '/'。结果将是:
/^(http:\/\/www.|https:\/\/www.|http:\/\/|https:\/\/)[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/
您需要将它们转义两次,因为要编译为正则表达式的 字符串 必须包含 '\/' 以转义斜杠,但要在字符串中引入反斜杠,您也必须转义反斜杠本身。