求個正則表達式!

jxsrsxyx 2012-03-16 04:15:31
eg. : font<font color='red'>font</font>
假如我要替換f或o或n或t或等等 為 <b>f或o或n或t或等等</b>
但是又不希望<font和</font> 標籤中的font中替換掉。

比如我要替換的是on
則我需要的結果是
f<b>on</b>t<font color='red'>f<b>on</b>t</font>

我像了半天也沒想到什麼辦法。
故來求教。。。
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2012-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 prototyper 的回复:]

BTW:其实,JS正则最简洁强大,THAN OTHER`S。
[/Quote]
正则其实是通用的。你的正则php直接copy过去,$&改成$0就可以了。
然后如果用零宽,php较新的版本可以这样。

$str = "font<font color='red'>font</font>aonf";
echo preg_replace('#(?<!<f|</f)on#i', '<b>$0</b>',$str);
foolbirdflyfirst 2012-03-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 prototyper 的回复:]

1、“為 <b>f或o或n或t或等等</b>”:
JScript code
"font<font color='red'>font</font>".replace(/(?=[^>]*(?=<))[font]/gi, "<b>$&</b>")

2、“比如我要替換的是on”:
JScript code
"font<font color='red'>font</font>".rep……
[/Quote]
不错不错,我老想着零宽...

不过需要微调
"font<font color='red'>font</font>aonf".replace(/(?=[^>]*(?=<|$))on/gi, "<b>$&</b>")


jxsrsxyx 2012-03-17
  • 打赏
  • 举报
回复
各位都是高手,都沒怎麼看明白。還是慢慢想吧!
prototyper 2012-03-16
  • 打赏
  • 举报
回复
BTW:其实,JS正则最简洁强大,THAN OTHER`S。
prototyper 2012-03-16
  • 打赏
  • 举报
回复
1、“為 <b>f或o或n或t或等等</b>”:
"font<font color='red'>font</font>".replace(/(?=[^>]*(?=<))[font]/gi, "<b>$&</b>")

2、“比如我要替換的是on”:
"font<font color='red'>font</font>".replace(/(?=[^>]*(?=<))on/gi, "<b>$&</b>")

3、哈哈,下次记得多给点分。
jxsrsxyx 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 foolbirdflyfirst 的回复:]
javacript不支持(?<!)这样的零宽断言有时候确实比较麻烦。

你试试下面这种。

JScript code
var str ="<t>font<font color='red'>font</font>aonf"

str = str.replace(/([^<>]*)<|>([^<>]*)<|>([^<>]*)/g,
function($_1){
return $_……
[/Quote]
先生大才,還有沒有其他的方法?不限語言,學習下。。。
foolbirdflyfirst 2012-03-16
  • 打赏
  • 举报
回复
javacript不支持(?<!)这样的零宽断言有时候确实比较麻烦。

你试试下面这种。
var str ="<t>font<font color='red'>font</font>aonf"

str = str.replace(/([^<>]*)<|>([^<>]*)<|>([^<>]*)/g,
function($_1){
return $_1.replace('on','<b>on</b>')
})
alert(str)

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧