正则表达式去除html标签

本文介绍如何从HTML字符串中移除标签,并通过POST请求发送数据至指定URL,包括正则表达式匹配和过滤HTML标签的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/**
 * 删除Html标签
 * 
 * @param inputString
 * @return
 */
public static String htmlRemoveTag(String inputString) {
    if (inputString == null)
        return null;
    String htmlStr = inputString; // 含html标签的字符串
    String textStr = "";
    java.util.regex.Pattern p_script;
    java.util.regex.Matcher m_script;
    java.util.regex.Pattern p_style;
    java.util.regex.Matcher m_style;
    java.util.regex.Pattern p_html;
    java.util.regex.Matcher m_html;
    try {
        //定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
        String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; 
        //定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
        String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; 
        String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
        p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
        m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 过滤script标签
        p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
        m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 过滤style标签
        p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
        m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 过滤html标签
        textStr = htmlStr;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return textStr;// 返回文本字符串
}


	public static void requestPost(String ipString) throws IOException{
	       /** 
         * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using 
         * java.net.URL and //java.net.URLConnection 
         *  
         * 使用页面发送请求的正常流程:在页面http://www.faircanton.com/message/loginlytebox. 
         * asp中输入用户名和密码,然后按登录, 
         * 跳转到页面http://www.faircanton.com/message/check.asp进行验证 验证的的结果返回到另一个页面 
         *  
         * 使用java程序发送请求的流程:使用URLConnection向http://www.faircanton.com/message/ 
         * check.asp发送请求 并传递两个参数:用户名和密码 然后用程序获取验证结果 
         */  
        URL url = new URL("http://199604.com/ip/");  
        URLConnection connection = url.openConnection();
        /** 
         * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。 
         * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做: 
         */  
        connection.setDoOutput(true);  
        /** 
         * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ... 
         */  
        OutputStreamWriter out = new OutputStreamWriter(  
                connection.getOutputStream(), "8859_1");  
        out.write("ip=" + ipString + "&action=2"); // 向页面传递数据。post的关键所在!  
        // out.write("username=kevin&password=*********"); //向页面传递数据。post的关键所在!  
        // remember to clean up  
        out.flush();  
        out.close();  
        /** 
         * 这样就可以发送一个看起来象这样的POST: POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT: 
         * text/plain Content-type: application/x-www-form-urlencoded 
         * Content-length: 99 username=bob password=someword 
         */  
        // 一旦发送成功,用以下方法就可以得到服务器的回应:  
        String sCurrentLine;  
        String sTotalString;  
        sCurrentLine = "";  
        sTotalString = "";  
        InputStream l_urlStream;  
        l_urlStream = connection.getInputStream();//获取返回的Html内容
        // 传说中的三层包装阿!  

        BufferedReader l_reader = new BufferedReader(new InputStreamReader(  
                l_urlStream));
        System.out.println("第一次过滤");
        while ((sCurrentLine = l_reader.readLine()) != null) {  
            sTotalString+= sCurrentLine;
            
        }
        
          
        String regEx_script = "<script[^>]*?>.*?</script>";
        sTotalString = sTotalString.replaceAll(regEx_script, "");
        
        String regEx_style = "<style[^>]*?>.*?</style>"; 
        sTotalString = sTotalString.replaceAll(regEx_style, "");
        
        String html_regex = "<(.[^>]*)>";// /过滤标签的规则  
        Pattern p = Pattern.compile(html_regex);// 将规则封装成对象  
        
        BufferedReader htmlbufr = new BufferedReader(new StringReader(sTotalString));
        
        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(  
                new FileOutputStream("E://IpHTML.txt")));  
        while ((sCurrentLine = htmlbufr.readLine()) != null) { 
        	 sCurrentLine = sCurrentLine.replaceAll(html_regex, "");  
            bufw.write(sCurrentLine);  
            bufw.newLine();// /换行  
            bufw.flush();// 刷新  
  
        }  
        bufw.close();   
        System.out.println("第一次过滤完毕,开始下一轮过滤");  
        
	}


<think>好的,用户的问题是关于如何在前端使用正则表达式去除HTML标签。首先,我需要回忆一下正则表达式处理HTML标签的常用方法。根据用户提供的引用内容,比如引用[1]和[2],他们提到使用类似/<[^>]+>/g的正则表达式来匹配所有HTML标签,并用replace方法替换为空字符串。这可能是一个基础的解决方案。 不过,我记得HTML的结构可能比较复杂,比如自闭合标签(如<img />)或者标签内的属性含有>符号的情况,这时候简单的正则可能无法完全覆盖。但用户的需求是前端处理,可能更倾向于简单高效的方法,而不是完全严格的解析。这时候可能需要权衡准确性和性能。 接下来,用户提到的引用[2]中的例子,使用stripHtml函数,这正是用户需要的。所以应该给出一个类似的JavaScript函数示例,展示如何用正则表达式替换掉标签。同时,需要提醒用户这种方法的局限性,比如无法处理<script>或<style>标签内的内容,或者注释等特殊情况。 然后,用户可能还关心如何处理转义字符或者特殊符号,比如<或者>,这时候可能需要额外的处理步骤。但根据引用[2],他们似乎已经用正则表达式处理了标签,可能不需要处理这些实体编码,因为标签本身已经被去除了,剩下的文本中的实体编码可能需要另外处理。 另外,引用[3]和[4]提到不同的正则表达式模式,比如去除特定事件属性或者更复杂的标签匹配。可能需要考虑更全面的正则表达式,比如/<[^>]+>/gi,其中i修饰符用于忽略大小写,确保匹配所有标签。 最后,应该总结步骤,给出代码示例,并指出潜在的问题,推荐使用DOM解析器如DOMParser来更安全地处理,尤其是在处理不可信内容时,避免XSS攻击的风险。这符合前端开发的最佳实践,同时满足用户的需求。</think>要使用正则表达式在前端去除HTML标签,可以通过以下步骤实现: ### 步骤说明 1. **基础正则表达式**: 使用`/<[^>]+>/g`匹配所有HTML标签 - `/`:正则表达式开始 - `<`:匹配标签起始符 - `[^>]+`:匹配除`>`外的任意字符(至少1次) - `>`:匹配标签结束符 - `g`:全局匹配模式[^2] 2. **JavaScript实现示例**: ```javascript function stripHTML(html) { return html.replace(/<[^>]+>/g, ''); } // 示例用法 const htmlContent = '<div><p>Hello <b>World</b>!</p></div>'; const plainText = stripHTML(htmlContent); // 输出:"Hello World!" ``` ### 注意事项 1. **局限性**: - 无法处理注释`<!-- content -->` - 不能正确解析`<script>`/`<style>`标签内的内容 - 可能误删含`<`符号的非标签内容(如数学公式) 2. **增强方案**: ```javascript // 改进版正则(包含注释处理) html.replace(/(<([^>]+)>|<!--[\s\S]*?-->)/gi, ''); ``` 3. **安全建议**: 对用户输入内容推荐使用`DOMParser`: ```javascript function safeStripHTML(html) { const doc = new DOMParser().parseFromString(html, 'text/html'); return doc.body.textContent || ""; } ``` [^1]: 基础正则表达式方法参考了HTML标签处理通用方案 [^2]: JavaScript正则实现参考了前端常用标签去除模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值