2012-03-02 123 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

這每一個不以「#」開頭的字符串相匹配。

好的,我不確定,你想匹配字符串的開始還是不以「#」開頭的「單詞」?