正则表达式求助 \w{0,}<[^/dt]

2017-04-18 15:09:43 +08:00
 teemoer
var str="12<td>2<2<div>2</td>"; 
//前面任意字符出现 0 或多次 < 后面字符不包含 /或 d 或 t 
console.info(str.replace("\w{0,}<[^/dt]","666"));

输出结果为: 12<td>2<2<div>2</td>

我希望的输出结果是 把 2<2 替换为 26662 也就是说把<替换为 666 并且不能影响 :

 12<td>26662<div>2</td>

求解 如果写这个正则

2077 次点击
所在节点    正则表达式
10 条回复
teemoer
2017-04-18 15:11:28 +08:00
<script >
V2KN
2017-04-18 15:16:16 +08:00
没理解你的意思。。什么程序语言?“不能影响”什么?多给举个例子吧。
sculley
2017-04-18 15:17:33 +08:00
直接替换 2<2 不好吗,为什么用正则
teemoer
2017-04-18 15:18:46 +08:00
@sculley = = 如果是固定 2<2 我还需要用正则么
teemoer
2017-04-18 15:21:34 +08:00
@V2KN

```javascript

比如 "12<td>2<2<div>2</td>"; > "12<td>26662<div>2</td>";

//我想要的是 把 < 替换成 666 但是 这个< 不能是 <td> 或者 </td> 或者 <div> 这些都是 html 标签 td 和 div
// 我只是举个列子, 也就是说 不能影响正常的 html 标签 来 替换 html 标签里面 包含的 < 字符串



```
V2KN
2017-04-18 15:30:22 +08:00
@teemoer [ \d]+(<|>)[ |\d]+這樣可不可以。<或者>被捕獲到一個 group 裏面。
V2KN
2017-04-18 15:31:23 +08:00
@V2KN 多了一個豎線。[ \d]+(<|>)[ \d]+
teemoer
2017-04-18 15:31:50 +08:00
@V2KN 我写出来了....

``` javascript

var str = "12<td>2<2<div>23<33</td>";
str.replace(/(\w{0,}\<{1,}[^t//d])/gi, function ($0, $1) {
str = str.replace($1, ($1 + "").replace("<", 666));
console.info(str);
})


```
qyc666
2017-04-18 15:58:07 +08:00
str.replace(/<([^\/dt])/gi,"666$1")
是不是更短一点
teemoer
2017-04-18 16:03:39 +08:00
@qyc666 666 万分感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355645

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX