2009-06-17 34 views
4

我有以下字符串:处理多个JavaScript取代匹配

This *is* a *test*! 

我要大胆使用*字符包围的话(所以“是”,并在例如“测试”)。

我有以下的JavaScript代码:

var data = "This *is* a *test*!"; 
return data.replace(/\*(.*)\*/g, <b>$1</b>); 

当返回的字符串,我得到如下:

This <b>is* a *test</b>! 

我怎样才能改变模式或基本代码,以便做更换我想要的方式?

回答

5

与我的HTML一团糟......

var result = "This *is* a *test*!".replace(/\*(.*?)\*/gi, "<b>$1</b>"); 
+1

在这个例子中,你并不需要`i`修饰符 - `。*`可以匹配任何大小写字符,`\ *`不受大小写影响。 – redbmk 2012-11-09 21:38:06

2

你需要让图形非贪婪通过添加 - 运算符*之后:

var data = "This *is* a *test*!"; 
return data.replace(/\*(.*?)\*/g, "<b>$1</b>"); 

这里是一个参考来自Mozilla Developer Center的JavaScript RegExp。