Java 检查整个多行时 HTML 状态代码的正则表达式 HTML header
Java Regex for HTML status code when checking entire multiline HTML header
我想验证 HTTP 响应状态代码 - 语法是 HTML/1.1 200 ...
传递的字符串是多行的,包含换行符。我的初步正则表达式是 ^(HTTP|http)/(1|2)\.\d \d{3}.+$
。当我只传递一行时效果很好,没有换行符和其余行。这个正则表达式有什么问题?这是示例代码:
System.out.println(
"HTTP/1.1 206 Partial Content\n"
+ "Last-Modified: Thu, 18 Sep 2014 03:04:38 GMT\n"
+ "Content-Type: video/mp4\n"
+ "Date: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Expires: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Cache-Control: private, max-age=21294\n"
+ "Content-Range: bytes 0-17016614/17016615\n"
+ "Accept-Ranges: bytes\n"
+ "Content-Length: 17016615\n"
+ "Connection: keep-alive".matches("^(HTTP|http)/(1|2)\.\d \d{3}.+$"));
编辑:
我认为只对第一行进行子字符串化然后检查它是否匹配会更有效。而且正则表达式更简单。
.
可能不匹配换行符。尝试使用 (.|\s)+
来匹配空白字符:
^(HTTP|http)/(1|2)\.\d \d{3}(.|\s)+$
根据您编辑的问题,问题是连接的字符串应放在括号中,否则将针对最后的字符串部分调用 matches
方法:
System.out.println(
("HTTP/1.1 206 Partial Content\n"
+ "Last-Modified: Thu, 18 Sep 2014 03:04:38 GMT\n"
+ "Content-Type: video/mp4\n"
+ "Date: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Expires: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Cache-Control: private, max-age=21294\n"
+ "Content-Range: bytes 0-17016614/17016615\n"
+ "Accept-Ranges: bytes\n"
+ "Content-Length: 17016615\n"
+ "Connection: keep-alive").matches("^(HTTP|http)/(1|2)\.\d \d{3}(.|\s)+$"));
我想验证 HTTP 响应状态代码 - 语法是 HTML/1.1 200 ...
传递的字符串是多行的,包含换行符。我的初步正则表达式是 ^(HTTP|http)/(1|2)\.\d \d{3}.+$
。当我只传递一行时效果很好,没有换行符和其余行。这个正则表达式有什么问题?这是示例代码:
System.out.println(
"HTTP/1.1 206 Partial Content\n"
+ "Last-Modified: Thu, 18 Sep 2014 03:04:38 GMT\n"
+ "Content-Type: video/mp4\n"
+ "Date: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Expires: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Cache-Control: private, max-age=21294\n"
+ "Content-Range: bytes 0-17016614/17016615\n"
+ "Accept-Ranges: bytes\n"
+ "Content-Length: 17016615\n"
+ "Connection: keep-alive".matches("^(HTTP|http)/(1|2)\.\d \d{3}.+$"));
编辑:
我认为只对第一行进行子字符串化然后检查它是否匹配会更有效。而且正则表达式更简单。
.
可能不匹配换行符。尝试使用 (.|\s)+
来匹配空白字符:
^(HTTP|http)/(1|2)\.\d \d{3}(.|\s)+$
根据您编辑的问题,问题是连接的字符串应放在括号中,否则将针对最后的字符串部分调用 matches
方法:
System.out.println(
("HTTP/1.1 206 Partial Content\n"
+ "Last-Modified: Thu, 18 Sep 2014 03:04:38 GMT\n"
+ "Content-Type: video/mp4\n"
+ "Date: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Expires: Sat, 14 Mar 2015 21:44:08 GMT\n"
+ "Cache-Control: private, max-age=21294\n"
+ "Content-Range: bytes 0-17016614/17016615\n"
+ "Accept-Ranges: bytes\n"
+ "Content-Length: 17016615\n"
+ "Connection: keep-alive").matches("^(HTTP|http)/(1|2)\.\d \d{3}(.|\s)+$"));