我正在使用Java来查看某些ColdFusion代码是否符合某些标准。
我要检查的一件事是标签名称是全是小写字母还是数字。标签的其余部分,如属性,可以是任何情况。
cfquery
是此行中的代码名称:<cfquery name="qryMyQuery">
。因为它全是小写的,所以它应该通过。但是<cfQuery>
不应该通过。
答案 0 :(得分:0)
此正则表达式仅匹配小写标记名称:</?[a-z0-9]+[\s>/]
。我假设ColdFusion使用HTML / XML样式语法。它适用于所有类型的标签:open,closed和empty(但它不是CFG解析器,因此script
中的嵌入式标签可能会使其跳闸)。
作为"</?[a-z0-9]+[\\s>/]"
。
编辑:如果必须与整个代码匹配,您可以使用:</?[a-z0-9]+(?:>|[\s/][^>]*>)
字符串:"</?[a-z0-9]+(?:>|[\\s/][^>]*>)"
这应该适用于许多输入。它传递给前2个,并且在此列表中的最后3个失败:
<re STuff=caSeS></re ><NO><nO><N0T/>
这适用于regex101.com。
您的Java代码应如下所示:
Pattern regex = Pattern.compile("</?[a-z0-9]+(?:>|[\\s/][^>]*>)");
Matcher regexMatcher = regex.matcher(
"<re STuff=caSeS></re ><NO><nO><N0T/>");
while (regexMatcher.find()) {
for (int i = 1; i <= regexMatcher.groupCount(); i++) {
// matched text: regexMatcher.group(i)
// match start: regexMatcher.start(i)
// match end: regexMatcher.end(i)
}
}