【发布时间】:2014-03-26 15:35:54
【问题描述】:
我正在尝试检查输入是否为数字。这是代码
<#if (link_data.canonical)!?matches(".*/sites/.*") && (pageData.ar.gP)?has_content >
<#if (pageData.ar.gP)?is_number >
<link rel="author" href="https://plus.google.com/${(pageData.ar.gP)!}" />
<#else>
<link rel="ar" href="https://plus.google.com/+${(pageData.ar.gP)!}" />
</#if>
</#if>
但是,以上内容对我来说效果不佳。所以我正在尝试编写一个正则表达式来检查 pageData.ar.gP 的值是否匹配([A-Za-z])。下面是代码
<#if (link_data.canonical)!?matches(".*/sites/.*") && (pageData.ar.gP)?has_content && (pageData.ar.gP)?matches("A-za-z")>
<link rel="ar" href="https://plus.google.com/+${(pageData.ar.gP)!}" />
<#else>
<link rel="ar" href="https://plus.google.com/${(pageData.ar.gP)!}" />
</#if>
上面的代码似乎也不起作用。有什么问题?
【问题讨论】:
-
在什么情况下不起作用?
-
它没有检测到数字。即使我做 ?is_number 也没有检测到正则表达式 ?matches("A-za-z")。如果 pageData.ar.gP 是一个数字,我不想在 url 中附加 + 。如果 pageData.ar.gP 不是数字,我想在 url 中附加 +。
-
?is_number检查其左侧操作数是否具有数字类型,而不是可以解释为数字的字符串。所以你也必须在那里使用正则表达式。
标签: java regex freemarker