Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Regexp - global replace of a character between tags

30 views
Skip to first unread message

MB

unread,
Mar 29, 2007, 6:03:31 AM3/29/07
to
I need to replace all occurances of a certain character located between
two tags. I have included an example of what i have come up with so far,
but it doesn't work they way I want it to:

str = "some content<script type=\"text/javascript\">var str =
'asdfasdfASDFASDF';<\/script>";
str = str.replace(/(<script.*?>.*?)a(.*?<\/script>)/gim, "$1X$2");
alert(str);

In this example, i want all 'a' between the script tags to be replaced
by 'X', but only the first is replaced. How can I modify this to replace
*all* occurances of 'a'?

/MB

Evertjan.

unread,
Mar 29, 2007, 7:54:53 AM3/29/07
to

str = str.replace(/(<script.*?>)(.*)(?=<\/script>)/gi, function(x,y,z)
{return y+z.replace(/a/gi,'Z')})

[beware of line break. IE tested]

--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)

MB

unread,
Mar 29, 2007, 10:43:04 AM3/29/07
to
>> I need to replace all occurances of a certain character located between
>> two tags. I have included an example of what i have come up with so far,
>> but it doesn't work they way I want it to:
>>
>> str = "some content<script type=\"text/javascript\">var str =
>> 'asdfasdfASDFASDF';<\/script>";
>> str = str.replace(/(<script.*?>.*?)a(.*?<\/script>)/gim, "$1X$2");
>> alert(str);
>>
>> In this example, i want all 'a' between the script tags to be replaced
>> by 'X', but only the first is replaced. How can I modify this to replace
>> *all* occurances of 'a'?
>>
>
> str = str.replace(/(<script.*?>)(.*)(?=<\/script>)/gi, function(x,y,z)
> {return y+z.replace(/a/gi,'Z')})
>
> [beware of line break. IE tested]
>

Thanks. This works well, however only as long as the contents of 'str'
is just one line. It does not find any matches when I have several
lines. I tried adding the m-flag to the regular expressions, but that
didn't work. Can this be solved too?

/MB

Evertjan.

unread,
Mar 29, 2007, 12:04:25 PM3/29/07
to
MB wrote on 29 mrt 2007 in comp.lang.javascript:


str = str.replace(/\n/g,'\uffff').replace(/(<script.*?>)(.*)(?=
<\/script>)/gi, function(x,y,z) {return y+z.replace(/a/gi,'Z')}).replace(/
\uffff/g,'\n')

[beware of line breaks. IE tested]

0 new messages