js 正则表达式去除指定的HTML标签

JavaScript011

js 正则表达式去除指定的HTML标签,第1张

可以这么写:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "

<html xmlns="

<head>

<title>匹配正则表达式</title>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<script type="text/javascript">

    function t1() {

        var cont = document.getElementById('cont')

        var cv = cont.value

        

        var reg = /<a[\s]+[^>]+>([^<>]+)<\/a>/gi  // 正则表达式

 

        alert(cv.replace(reg,''))

    }

</script>

<style type="text/css">

textarea {

    width:400px

    height:200px

}

</style>

</head>

   <body>

      <p>

        <textarea id="cont"></textarea>

      </p>

      <p><input type="button" value="把链接换成空链接" onclick="t1()" /></p>

   </body>

</html>

需要准备的材料分别有:电脑、html编辑器、浏览器。

1、首先,打开html编辑器,新建html文件,例如:index.html。

2、在index.html中的<script>标签,输入js代码:。

var reg = /^[0-9,]*$/

var a = '1231,456,346,', b = '34sda'

test(a)test(b)

function test(text) {

if (reg.test(text)) {

$('body').append(text + '符合</br>')

} else {

$('body').append(text + '不符合</br>')

}

}

3、浏览器运行index.html页面,此时会打印出该正则表达式对“1231,456,346,”和“34sda

”的校验结果。

给你个例子,你自己看看吧。

平衡组/递归匹配

如何把xx <aa <bbb><bbb>aa>yy这样的字符串里,最长的配对的尖括号内的内容捕获出来?

这里需要用到以下的语法构造:

(?'group') 把捕获的内容命名为group,并压入堆栈(Stack)

(?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败

(?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分

(?!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败

我们需要做的是每碰到了左括号,就在压入一个"Open",每碰到一个右括号,就弹出一个,到了最后就看看堆栈是否为空--如果不为空那就证明左括号比右括号多,

那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符),尽量使整个表达式得到匹配。

平衡组一个匹配嵌套的<div>标签:

<div[^>]*>[^<>]*(((?'open'<div[^>]*)[^<>]*)+(?'-open'</div>)[^<>]*)+)*(?(open)(?!))</div>