You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URL正则校验Java代码出现两处语法错误,请求解析原因

解析Java URL正则校验代码的编译错误

我来帮你逐个拆解这两个编译错误的原因,以及对应的修复方案:

第一个错误:行3提示 ';' expected

问题出在Pattern.compile的调用语句末尾——你多写了一个闭合双引号和右括号!
原代码里的这部分:

Pattern p = Pattern.compile("^(http://|https://)?(www.)([a-zA-Z0-9]+).[a-zA-Z0-9]*.[a-z]{3}.?([a-z]+)?$")");

末尾的")");是错误的,正则表达式字符串已经用前一个双引号闭合了,额外的")属于多余的语法符号,导致Java编译器无法识别正确的语句结尾,所以抛出了缺少分号的错误。

另外顺便提个小细节:正则里的.是通配符,如果你想匹配实际的点号,需要用\\.转义,不然你的正则会错误匹配到其他字符,修复后这行应该是:

Pattern p = Pattern.compile("^(http://|https://)?(www\\.)([a-zA-Z0-9]+)\\.[a-zA-Z0-9]*\\.[a-z]{3}\\.?([a-z]+)?$");

第二个错误:行5提示 ')' expected

调用matcher()方法时,传入的URL没有用双引号包裹!
Java里字符串必须用双引号括起来,你直接写https://test.com:8080/wh-101的话,编译器会把它当成一堆非法的标识符和特殊符号(比如冒号、斜杠都是Java语法里的特殊字符),根本无法识别这是一个方法参数,所以提示缺少右括号来闭合matcher()的调用。
修复后这行应该是:

m = p.matcher("https://test.com:8080/wh-101");

修复后的完整代码

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class Testimmutablestring1{ 
    public static void main(String[] args ) { 
        Pattern p = Pattern.compile("^(http://|https://)?(www\\.)([a-zA-Z0-9]+)\\.[a-zA-Z0-9]*\\.[a-z]{3}\\.?([a-z]+)?$"); 
        Matcher m; 
        m = p.matcher("https://test.com:8080/wh-101"); 
    } 
}

(补充:别忘了导入Pattern和Matcher类,不然也会触发新的编译报错哦)

内容的提问来源于stack exchange,提问作者Meenakshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:29:06