正则表达式检查ColdFusion代码:标签名称是否为小写?

时间:2016-04-23 10:55:10

标签: java regex coldfusion

我正在使用Java来查看某些ColdFusion代码是否符合某些标准。

我要检查的一件事是标签名称是全是小写字母还是数字。标签的其余部分,如属性,可以是任何情况。

cfquery是此行中的代码名称:<cfquery name="qryMyQuery">。因为它全是小写的,所以它应该通过。但是<cfQuery>不应该通过。

1 个答案:

答案 0 :(得分:0)

此正则表达式仅匹配小写标记名称:</?[a-z0-9]+[\s>/]。我假设ColdFusion使用HTML / XML样式语法。它适用于所有类型的标签:open,closed和empty(但它不是CFG解析器,因此script中的嵌入式标签可能会使其跳闸)。

作为"</?[a-z0-9]+[\\s>/]"

的Java字符串

编辑:如果必须与整个代码匹配,您可以使用:</?[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)
        }
    }