I am trying to write some JavaScript RegEx to replace user inputed tags with real html tags, so `[b]` will become `<b>` and so forth. the RegEx I am using looks like so

```
var exptags = /\[(b|u|i|s|center|code){1}]((.){1,}?)\[\/(\1){1}]/ig;

```

with the following JavaScript

```
s.replace(exptags,"<$1>$2</$1>");

```

this works fine for single nested tags, for example:

```
[b]hello[/b] [u]world[/u]

```

but if the tags are nested inside each other it will only match the outer tags, for example 

```
[b]foo [u]to the[/u] bar[/b]

```

this will only match the `b` tags. how can I fix this? should i just loop until the starting string is the same as the outcome? I have a feeling that the `((.){1,}?)` patten is wrong also?

Thanks