真正匹配字符串中的标签的特定内容例如
var str = "<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。
君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢,
<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>"
字符串中找到str 里面ass字符串然后替换掉!而不是把 a标签class的ass也替换掉 这个怎么写 或者找到所有标签的
文本的某个字符串的正则怎么写
var a=/[>].*?(ass).*?[<]/
文字查找及替换.html:23 <p>君不见,黄河之水天aaaabb上来,奔流到海不复回。 君不见ass,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,<a href='http://www.baidu.com' class='font-size:20px;'> 百度</a></p>
/[>].*?(百度).*?[<]/g
<p<span>ss</span>a href='http://www.baidu.com' class=''> 百度</a></p>
这个是打印的console就是怎么才能替换as
@syf_kevin: var a=/[>].*?(ass).*?[<]/
var a1=a.exec(str)
var r=a1[0]
r=r.replace(a1[1],"")
str=str.replace(a1[0],r)
大概是这个意思。至于重复的问题就循环一下吧。
String str = "aa-bb-cc-dd";
str.replaceAll("aa","");
把字符串aa替换成空字符.
主要是字符串中有标签str="<span>aa-bb-cc-dd</span>"这样的!比如将所有a替换为"f" <span>这个标签不能替换的
如果c#相对简单一点,用一个断言就够了
string str = "<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢,<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>";
string newStr= Regex.Replace(str, @"(?<!cl)ass", "【新内容】");
javascript:
var str="<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。 君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢,<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>";
str.replace(/((([^c]l)|([^l])|^))ass/g,'$1【新内容】')
((([^c]l)|([^l])|^))ass js或c#都通用,写起来相对复杂一点
送你一个自己写的方法
String.prototype.instHtmlText = function (RegExpObj,RegExpStr,option){
/**
* @获取或替换除newOption.RegExp的 instHtmlText(RegExpObj,RegExpStr,option)方法
* RegExpObj(String|RegExp) 查询对象OR正则表达式
* RegExpStr(String|Object) 查询对象目标替换结果OR配置(同等于option参数)
* option(Object) 配置选项
* option.pattern(String) 匹配模式,默认为"___ZYS___"
* option.RegExp(String|RegExp) 除对象外,默认为"(<.+?>)",即除html标签外的html内容
*/
if(typeof RegExpStr == "object"){option = RegExpStr;RegExpStr = undefined;};
var newOption = {};
for(var i in option){newOption[i] = option[i];};
newOption = newOption || {};
newOption.pattern = newOption.pattern || "___ZYS___";
newOption.RegExp = newOption.RegExp || "(<.+?>)";
if(RegExpStr){
var b = this.replace(new RegExp(newOption.RegExp,"img"),newOption.pattern).replace(new RegExp(RegExpObj,"img"),RegExpStr);
this.match(new RegExp(newOption.RegExp,"img")).forEach(function(e){
b =b.replace(newOption.pattern,e)
});
return b;
}else{
return this.replace(new RegExp(newOption.RegExp,"img"),newOption.pattern).match(new RegExp(RegExpObj,"img"));
}
}
然后你就可以很方便的使用
var str = `<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。
君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢,
<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>`
str.instHtmlText("ass","【我是新内容】")
写了一个demo但是好像是不行的
String.prototype.instHtmlText = function (RegExpObj, RegExpStr, option) {
/**
* @获取或替换除newOption.RegExp的 instHtmlText(RegExpObj,RegExpStr,option)方法
* RegExpObj(String|RegExp) 查询对象OR正则表达式
* RegExpStr(String|Object) 查询对象目标替换结果OR配置(同等于option参数)
* option(Object) 配置选项
* option.pattern(String) 匹配模式,默认为"___ZYS___"
* option.RegExp(String|RegExp) 除对象外,默认为"(<.+?>)",即除html标签外的html内容
*/
if (typeof RegExpStr == "object") {
option = RegExpStr;
RegExpStr = undefined;
}
var newOption = {};
for (var i in option) {
newOption[i] = option[i];
}
newOption = newOption || {};
newOption.pattern = newOption.pattern || "___ZYS___";
newOption.RegExp = newOption.RegExp || "(<.+?>)";
if (RegExpStr) {
var b = this.replace(new RegExp(newOption.RegExp, "img"), newOption.pattern).replace(new RegExp(RegExpObj, "img"), RegExpStr);
this.match(new RegExp(newOption.RegExp, "img")).forEach(function (e) {
b = b.replace(newOption.pattern, e)
});
return b;
} else {
return this.replace(new RegExp(newOption.RegExp, "img"), newOption.pattern).match(new RegExp(RegExpObj, "img"));
}
};
var str = "<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。" +
"君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢," +
"<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>";
str.instHtmlText("ass", "替换的是这个");
这个现实的是instHtmlText这个方法没有
@syf_kevin: 是正确的呀
var str = "<p>君不见,黄河之aaabbb水天上来,奔流到ass海不复回。" +
"君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生ass得意须尽欢," +
"<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>";
执行
str.instHtmlText("ass", "替换的是这个");
结果是
"<p>君不见,黄河之aaabbb水天上来,奔流到替换的是这个海不复回。君不见,高堂明<span class='font-size:20px;'>镜悲白发</span>,朝如青丝暮成雪。 人生替换的是这个得意须尽欢,<a href='http://www.baidu.com' class='font-size:20px;'> 百度</p>"
@syf_kevin: 这难道不是你要的结果?
@张云山: 是我要的结果但是我写的话就不行
@syf_kevin:
好吧!
@张云山: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="css/reset.css">
<link type="text/css" rel="stylesheet" href="css/word.css">
<title>文字查找及替换</title>
</head>
<body>
<main>
<div></div>
<input class="serch" type="text" placeholder="请输入需要查找内容">
<input class="change" type="text" placeholder="请输入需要替换的内容">
<button class="serch_btn">查找</button>
<button class="change_btn">替换</button>
</main>
</body>
<script src="js/jquery-3.1.1.min.js"></script>
<script>
$(function () {
var string = "<p>君不见,黄河之ass水天aaaabb上来,奔流到海不复回<em>大傻逼</em>。 君不见ass,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,<a href='http://www.baidu.com' class=''> ass百度</a></p>";
string.instHtmlText("ass", "替换的是这个");
$("main>div").html(string);
String.prototype.instHtmlText = function (RegExpObj, RegExpStr, option) {
/**
* @获取或替换除newOption.RegExp的 instHtmlText(RegExpObj,RegExpStr,option)方法
* RegExpObj(String|RegExp) 查询对象OR正则表达式
* RegExpStr(String|Object) 查询对象目标替换结果OR配置(同等于option参数)
* option(Object) 配置选项
* option.pattern(String) 匹配模式,默认为"___ZYS___"
* option.RegExp(String|RegExp) 除对象外,默认为"(<.+?>)",即除html标签外的html内容
*/
if (typeof RegExpStr == "object") {
option = RegExpStr;
RegExpStr = undefined;
}
var newOption = {};
for (var i in option) {
newOption[i] = option[i];
}
newOption = newOption || {};
newOption.pattern = newOption.pattern || "___ZYS___";
newOption.RegExp = newOption.RegExp || "(<.+?>)";
if (RegExpStr) {
var b = this.replace(new RegExp(newOption.RegExp, "img"), newOption.pattern).replace(new RegExp(RegExpObj, "img"), RegExpStr);
this.match(new RegExp(newOption.RegExp, "img")).forEach(function (e) {
b = b.replace(newOption.pattern, e)
});
return b;
} else {
return this.replace(new RegExp(newOption.RegExp, "img"), newOption.pattern).match(new RegExp(RegExpObj, "img"));
}
};
});
</script>
</html>
看我全部的代码就这么点但是页面报
jquery-3.1.1.min.js:2 Uncaught TypeError: string.instHtmlText is not a function
at HTMLDocument.<anonymous> (文字查找及替换.html:22)
at j (jquery-3.1.1.min.js:2)
at k (jquery-3.1.1.min.js:2)
(anonymous) @ 文字查找及替换.html:22
j @ jquery-3.1.1.min.js:2
k @ jquery-3.1.1.min.js:2
setTimeout (async)
r.readyException @ jquery-3.1.1.min.js:2
(anonymous) @ jquery-3.1.1.min.js:2
j @ jquery-3.1.1.min.js:2
k @ jquery-3.1.1.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.1.1.min.js:2
i @ jquery-3.1.1.min.js:2
fireWith @ jquery-3.1.1.min.js:2
fire @ jquery-3.1.1.min.js:2
i @ jquery-3.1.1.min.js:2
fireWith @ jquery-3.1.1.min.js:2
k @ jquery-3.1.1.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.1.1.min.js:2
i @ jquery-3.1.1.min.js:2
fireWith @ jquery-3.1.1.min.js:2
fire @ jquery-3.1.1.min.js:2
i @ jquery-3.1.1.min.js:2
fireWith @ jquery-3.1.1.min.js:2
ready @ jquery-3.1.1.min.js:2
R @ jquery-3.1.1.min.js:3这个错误
@syf_kevin:
String.prototype.instHtmlText = function (RegExpObj, RegExpStr, option) {..............
方法要先执行
你要放在
var string = "<p>君不见,黄河之ass水天aaa.........
这句话之前执行
@syf_kevin:
并且要这么写,这样才会在main>div追加新的string
$("main>div").html(string.instHtmlText("ass", "替换的是这个"));
(?<!cl)(ass) 这个只能排除掉class中的ass,其他的ass都会匹配到