<link href="css/style.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link href="/css/style.css" rel="stylesheet" type="text/css"> <link href=css/style.css rel="stylesheet" type="text/css" />
href后面不含单,双引号且<link和href之间无空格外字符(可能含一个以上空格)。
<link rel=stylesheet type="text/css" href='css/style.css' />
href后面接单引号且<link和href之间有字符。 <link href=/css/style.css rel='stylesheet' type="text/css">
<link href=/css/style.css> (非标准模式1)
<link href=/css/style.css /> (非标准模式2) 要求同时匹配以上几种。
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link href="/css/style.css" rel="stylesheet" type="text/css"> <link href=css/style.css rel="stylesheet" type="text/css" />
href后面不含单,双引号且<link和href之间无空格外字符(可能含一个以上空格)。
<link rel=stylesheet type="text/css" href='css/style.css' />
href后面接单引号且<link和href之间有字符。 <link href=/css/style.css rel='stylesheet' type="text/css">
<link href=/css/style.css> (非标准模式1)
<link href=/css/style.css /> (非标准模式2) 要求同时匹配以上几种。
public static final void main(String[] args) {
String[] ss = new String[] {
"<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" />",
"<link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\" />",
"<link href=\"/css/style.css\" rel=\"stylesheet\" type=\"text/css\">",
"<link href=css/style.css rel=\"stylesheet\" type=\"text/css\" />",
"<link rel=stylesheet type=\"text/css\" href='css/style.css' />",
"<link href=/css/style.css>",
"<link href=/css/style.css />"
};
String regex = "<link\\s+.*?href=(\".+?\"|'.+?'|[^\"'].+?[^\"']).*>";
for (int i = 0; i < ss.length; i++) {
System.out.printf("%1$2d - %2$b\n", i, ss[i].matches(regex));
}
}
}