2012-02-06 112 views
0

我是匹配以某些前缀开头的单词。多个regEx匹配

这个正则表达式适用于我,但我在一个匹配中应用多个术语时遇到了麻烦。

  • 前缀匹配 '重':/re\S+/g;

我认为这将有

  • 前缀匹配 '重' 和 'HTTP' 工作:/(re|http)\S+/g;

然而,后者仅返回来自第二届的比赛。

下面是完整的代码:

function replacePrefix(input){ 
     var re = /(#)\S+/g;   
     var specials = []; 
     var match; 
     while(match = re.exec(input)){ 
      $('#text').html(input.replace(specials[0], "<span class='special'>"+specials[0]+"</span>")); 
     } 
    } 
+0

你能提供的要匹配,或不匹配什么'input'可能是什么一个例子。 – 2012-02-06 15:00:12

+0

例如“这是一个真正伟大的URL像http://www.coolurl.com的句子” 将返回“真的”和“http://www.coolurl.com” – MALK 2012-02-06 15:02:39

+0

我有点困惑关于你想用while循环中的代码实现的内容?你想追加一个新的span元素到'$('#text')'包含匹配吗? – 2012-02-06 15:22:50

回答

1
function replacePrefix(input){ 
    var re = /\b(?:re|http)\S+/g;   
    var specials = []; 
    var match; 
    while(match = re.exec(input)){ 
     console.log(match); 
    } 
} 
replacePrefix("This is a sentence with really great urls in it like http://coolurl.com";); 

["really"] 
["http://coolurl.com"] 
+0

感谢您的帮助,我的问题是一些流氓字符。感谢改进的正则表达式! – MALK 2012-02-06 16:33:16