2012-03-02 121 views
0

我在寻找在JS匹配字符串正则表达式不以# 启动此功能javascript正则表达式匹配^ [^#]?

String.prototype.parseHashtag = function() { 
     return this.match(/[#]+[A-Za-z0-9-_]+/g); 
    } 

    t="#lorem #ipsum yes no"; 
    console.log(t.parseHashtag()); // ["#lorem", "#ipsum"] 

相反,我发现这个Regex: Finding strings that doesn't start with X

但正则表达式不起作用/([ ^#] | ^)[az] /或者我可能累了... 我做了一个replace(),但真的很好奇,想知道如何在match()中做到这一点!

这里是一个js:http://jsfiddle.net/d8HVU/1/

+0

你的问题到底是什么?哪个正则表达式不起作用? – jfriend00 2012-03-02 22:11:08

回答

1

我试过了,并且在您的示例输入中对JavaScript很好。我希望其他投入也可以。测试一下。其他答案在Javascript中没有解决。

String.prototype.parseHashtag = function() { 
    return this.match(/(\s|^)[^#][\w\d-_]+\b/g); 
} 

t="#lorem #ipsum yes no"; 
alert(t.parseHashtag()); 
+0

+1可能你是对的,这匹配OP想要的最好。 2个小东西,它会匹配单词前面的空白(我认为没有机会避免这种情况,导致Javascript不支持lookbehinds),其次不需要'\ d'在charclass中,它包含在'\ w'中。 – stema 2012-03-02 22:36:31

+0

哦,重要的一点是:逃避字符类中的短划线或将其移动到最后,它定义了一个字符范围(可能不需要,因为之前是预定义的类,\ d)。 – stema 2012-03-02 22:39:21

+0

(\ s | ^)我需要学习正则表达式... ^是开始还是'不'时它在[]中?但不知道什么时候与|单(这是或?)... 正则表达式是webdev的新数独... – 2012-03-02 23:19:11

0

工作如果我想最后的散列标签匹配,并且它后面的所有字符,我会用这个表达式:

/#[^#]*$/ 

工作演示:http://jsfiddle.net/jfriend00/nE2bM/

如果您正在尝试做一些不同的事情,请明确说明您要求的内容。

0

可以使用负向前查找该

^(?!#).* 

看到它here on Regexr

这每一个不以“#”开头的字符串相匹配。

好的,我不确定,你想匹配字符串的开始还是不以“#”开头的“单词”?