0

我在 Jquery 中有这段代码-:

message = '#Usain Bolt #Usain Bolt #Usain Bolt'; message = " "+message+" ";
var type1 = 'Usain Bolt';                                                       
if(message.match(type1))
{ 
  var matchOne = new RegExp(' #'+type1+' ', 'g');  
  var matchTwo = new RegExp('\n#'+type1+' ', 'g'); 

  message = message.replace(matchOne," @"+type1+" ").replace(matchTwo,"\n@"+type1+" ");  
}

结果消息应该是@Usain Bolt @Usain Bolt @Usain Bolt

但是它变成了-:@Usain Bolt #Usain Bolt @Usain Bolt

有什么问题。感谢帮助..

4

1 回答 1

1

问题是 s 之间的空格#Usain Bolt是匹配的一部分。

" #Usain Bolt #Usain Bolt #Usain Bolt "
 ^-----------^                         first match
                         ^-----------^ second match
             ^-----------^             no match (a character can only match once)

改为使用单词边界:

message = '#Usain Bolt #Usain Bolt #Usain Bolt';
var type1 = 'Usain Bolt';                                                       
if(message.match(type1))
{ 
  var matchOne = new RegExp('#\\b'+type1+'\\b', 'g');  
  var matchTwo = new RegExp('\n#\\b'+type1+'\\b', 'g'); 

  message = message.replace(matchOne," @"+type1).replace(matchTwo,"\n@"+type1);  
}
于 2013-04-11T07:14:14.617 回答