首页 新闻 会员 周边

正则匹配字符串

0
悬赏园豆:100 [已解决问题] 解决于 2017-09-29 20:58

真正匹配字符串中的标签的特定内容例如

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也替换掉 这个怎么写 或者找到所有标签的
文本的某个字符串的正则怎么写
syf_kevin的主页 syf_kevin | 初学一级 | 园豆:18
提问于:2017-09-03 20:36
< >
分享
最佳答案
0

var a=/[>].*?(ass).*?[<]/

收获园豆:100
吴瑞祥 | 高人七级 |园豆:29449 | 2017-09-03 21:31

文字查找及替换.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 | 园豆:18 (初学一级) | 2017-09-03 21:47

这个是数据库存的是带有标签的字符串 我要将搜索内容的字体加大变红 现在就是变换不了类似
但是如果是拼音的话 会将标签属性的加上样式的
 
代码是这样的这个怎么写
用你的那个正则是这样
syf_kevin | 园豆:18 (初学一级) | 2017-09-03 22:05

@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)

大概是这个意思。至于重复的问题就循环一下吧。

吴瑞祥 | 园豆:29449 (高人七级) | 2017-09-03 22:09
其他回答(4)
0

String str = "aa-bb-cc-dd";

str.replaceAll("aa","");

把字符串aa替换成空字符.

Oliverwq | 园豆:208 (菜鸟二级) | 2017-09-04 10:48

主要是字符串中有标签str="<span>aa-bb-cc-dd</span>"这样的!比如将所有a替换为"f"  <span>这个标签不能替换的

支持(0) 反对(0) syf_kevin | 园豆:18 (初学一级) | 2017-09-04 11:22
0

如果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#都通用,写起来相对复杂一点

Blue_Dream | 园豆:140 (初学一级) | 2017-09-04 12:53
0

送你一个自己写的方法

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","【我是新内容】")

张云山 | 园豆:642 (小虾三级) | 2017-09-04 14:02

写了一个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这个方法没有

支持(0) 反对(0) syf_kevin | 园豆:18 (初学一级) | 2017-09-04 14:56

@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>"

支持(0) 反对(0) 张云山 | 园豆:642 (小虾三级) | 2017-09-04 15:01

@syf_kevin: 这难道不是你要的结果?

支持(0) 反对(0) 张云山 | 园豆:642 (小虾三级) | 2017-09-04 15:02

@张云山: 是我要的结果但是我写的话就不行

支持(0) 反对(0) syf_kevin | 园豆:18 (初学一级) | 2017-09-04 15:03

@syf_kevin: 

好吧!

支持(0) 反对(0) 张云山 | 园豆:642 (小虾三级) | 2017-09-04 15:06

@张云山: <!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这个错误

支持(0) 反对(0) syf_kevin | 园豆:18 (初学一级) | 2017-09-04 15:06

@syf_kevin: 

String.prototype.instHtmlText = function (RegExpObj, RegExpStr, option) {..............

方法要先执行

你要放在

var string = "<p>君不见,黄河之ass水天aaa.........

这句话之前执行

支持(0) 反对(0) 张云山 | 园豆:642 (小虾三级) | 2017-09-04 15:09

@syf_kevin: 

并且要这么写,这样才会在main>div追加新的string
$("main>div").html(string.instHtmlText("ass", "替换的是这个"));

支持(0) 反对(0) 张云山 | 园豆:642 (小虾三级) | 2017-09-04 15:11
0

(?<!cl)(ass) 这个只能排除掉class中的ass,其他的ass都会匹配到

海之殇 | 园豆:500 (菜鸟二级) | 2017-09-06 13:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册