我刚开始使用dotCMS修改现有网站。我正在尝试创建一个小部件,它接受一个名为urlTitle的自定义结构字段。它需要一个事件的标题,并使其友好。 Here is a tutorial describing the urlTitle
我有一个正确的javascript写的正则表达式。我的问题是当我尝试在速度上使用相同的正则表达式时,我遇到了一些麻烦。
以下是教程中的javascript:
<script>
function updateDisplayURLTitle(){
// get the title entered by the user
var plainTitle = dojo.byId("title");
// make a friendly url
var urlTitle = plainTitle.value.toLowerCase();
urlTitle= urlTitle.replace(/^\s+|\s+$/g,"");
urlTitle = urlTitle.replace(/[^a-zA-Z 0-9]+/g,' ');
urlTitle = urlTitle.replace(/\s/g, "-");
while(urlTitle.indexOf("--") > -1){
urlTitle = urlTitle.replace("--",'-');
}
// set the values of the display place holder and the custom field
// the is to hold the div open
dojo.byId("displayURLTitle").innerHTML = urlTitle;
dojo.byId("urlTitle").value=urlTitle;
}
// attach this the text1 field onchange
dojo.connect(dojo.byId("title"), "onchange", null, "updateDisplayURLTitle");
// populate the field on load
dojo.addOnLoad(updateDisplayURLTitle);
</script>
<div id="displayURLTitle" style="height:20px"> </div>
然后这是我的小部件的速度代码:
#set($nowsers = $date.format('yyyyMMddHHmmss', $date.getDate()))
#set($con = $dotcontent.pull("+structureName:calendarEvent +(conhost:48190c8c-42c4-46af-8d1a-0cd5db894797 conhost:SYSTEM_HOST) +calendarEvent.startDate:[$nowsers TO 21001010101000]",1,"calendarEvent.startDate"))
<ul>
#foreach($event in $con)
<li>
<a href="events/$event.urlTitle?id=$event.identifier">$event.title</a>
<p> $event.description</p>
</li>
#set($temp = $event.title.toLowerCase())
#set($temp = $temp.replaceAll('/^\s+|\s+$/g', ""))
#set($temp = $temp.replaceAll('/[^a-zA-Z 0-9]+/g', " "))
#set($temp = $temp.replaceAll('/\s/g', "-"))
$temp
$temp
#end
我的目标是让javascript中的正则表达式与速度一起工作。现在它不起作用,我不熟悉正则表达式,到目前为止,我的研究并没有让我失望。
我无法弄清楚的另一件事是/g
的作用。我在任何正则表达式资源网站都找不到它。
答案 0 :(得分:0)
我明白了。事实证明,正则表达式模式前面的转义字符/和/ g导致模式失败,因此速度中使用的方法不一定需要它。