The \b metacharacter is used to find a match at the beginning or end of a word. That is, use both to find whole words only.
Code:
var str = "Vic went shopping in a shop";
str = str.replace (/\bshop\b/gi, "store");
alert (str);
"It ain't what you don't know that gets you into trouble. It's what you know for sure that just ain't so." - Mark Twain, US humorist, novelist, short story author, & wit (1835 - 1910)
__________________
All the code given in this post has been tested and is intended to address the question asked.
Unless stated otherwise it is not just a demonstration.
If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
* The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".
Don't think this would work, as the apostrophes would be literals, not string delimiters. Unless I misunderstood?
__________________ ^_^
If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
* The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<style type="text/css">
/*<![CDATA[*/
.example {
position:absolute;left:20px;top:20px;width:400px;height:420px;background-Color:white;border:solid red 1px;padding:5px;
}
.wordcls {
color:#CC00FF;
}
.wordcls2 {
color:green;font-Weight:bold;
}
/*]]>*/
</style>
<script type="text/javascript">
/*<![CDATA[*/
// Word Links (1-Febuary-2013)
// by Vic Phillips http://www.vicsjavascripts.org.uk/
/*
Functional Code Size 0.793K
*/
//****** Functional Code - NO NEED to Change.
function zxcWordLinks(o){
var obj=document.getElementById(o.ID)||document.body,html,ary,wary=o.WordArray,word,txt,cs=typeof(o.CaseSensitive)!='boolean'||!o.CaseSensitive?false:true,s,els,z0=0,z1=0,z2=0,z3=0,z3a;
ary=obj.getElementsByTagName('A');
for (;z0<ary.length;z0++){
s=document.createElement('SPAN');
s.className='ZXC';
ary[z0].parentNode.insertBefore(s,ary[z0]);
s.appendChild(ary[z0]);
}
html=obj.innerHTML.replace(/</g,'zxc')
for (;z1<wary.length;z1++){
reg=new RegExp('('+wary[z1][0]+')','gi');
html=html.replace(reg,'<a>$1</a>');
}
html=html.replace(/zxc/g,'<');
obj.innerHTML=html;
els=obj.getElementsByTagName('SPAN');
for (;z2<els.length;z2++){
if (els[z2].className=='ZXC'){
els[z2].innerHTML=els[z2].innerHTML.replace(/<a>/ig,'').replace(/<\/a>/ig,'')+'</a>'
}
}
ary=obj.getElementsByTagName('A');
for (;z3<wary.length;z3++){
for (z3a=0;z3a<ary.length;z3a++){
word=wary[z3][0];
txt=ary[z3a].innerHTML;
if (!cs){
word=word.toLowerCase();
txt=txt.toLowerCase();
}
a=ary[z3a];
if (!a.href&&!a.href&&a.parentNode.className!='ZXC'&&trim(word)==trim(txt)&&typeof(wary[z3][2])=='string'){
a.className=wary[z3][2];
wary[z3][1]?a.href=wary[z3][1]:null;
a.title=a.href
s=document.createElement('SPAN');
s.className='ZXC';
a.parentNode.insertBefore(s,a);
s.appendChild(a);
}
}
}
}
function trim(string){
return string.replace(/^\s+|\s+$/g,'');
}
/*]]>*/
</script>
<script type="text/javascript">
/*<![CDATA[*/
function Init(){
zxcWordLinks({
WordArray:[
// field 0 = the phrase
// field 1 = the link HREF
// field 2 = the link class name
['defaults','http://www.webdeveloper.com/','wordcls'],
['tooltip','http://www.vicsjavascripts.org.uk/2','wordcls2'],
['Vics Javascripts','http://www.vicsjavascripts.org.uk/','wordcls'],
['Word Tool Tip','http://www.webdeveloper.com/','wordcls2'],
['shop','http://www.vicsjavascripts.org.uk/5','wordcls'],
['offsets','http://www.vicsjavascripts.org.uk/5','wordcls'],
['DIV in the HTML code','http://www.vicsjavascripts.org.uk/','wordcls2']
],
ID:'Example1',
CaseSensitive:true
});
}
if (window.addEventListener){
window.addEventListener('load',Init, false);
}
else if (window.attachEvent){
window.attachEvent('onload',Init);
}
/*]]>*/
</script>
</head>
<body>
<div id="Example1" class="example" >
Example 1 (ToopTip activated by 'mouseover')<br />
<br />
<p>
Word Tool Tip<br />
by Vic Phillips <a href="http://www.vicsjavascripts.org.uk/" >Vics Javascripts</a><br />
<br />
</p>
<div>
To display a tooltip popup on mouseover<br /> of a word or phrase.
<br />
shop and shopping
</div>
<hr />
<p>
Each word or phrase is defined in an array
together with optional tooltip inner html, class names and offsets.
</p>
<a href="http://www.vicsjavascripts.org/" >Script defaults may be</a> used to define the tooltip offsets from the word or phase,
the class name of the word or phrase, the class name of the tooltip,<br />
if the words and phrases are case sensitive,<br />
and the event type to display the tooltip.
<hr />
<div>
Alternatively the tooltip may be a DIV in the HTML code.
</div>
<hr />
<br />
<br />
The HTML may include nested elements and include inline elements<br />
such as images <img src="http://www.vicsjavascripts.org.uk/StdImages/Egypt5.jpg" alt="Image" width="50" height="50" />
and inputs <input name="" size="10" />.
</div>
</body>
</html>
the case in point is shop and shopping
it is linking the shop in shopping which is not required