2014-05-22 50 views
0

哇,我吸在正則表達式匹配一切

http://regex101.com/r/lM8oX3

([*][.]+[*]) 

我想匹配的文本像這樣:

*hello* 
+0

我不知道你神交字符類。如果你看看鏈接中的解釋,'[。]'沒有達到你想要的效果。 – Max

+0

'字面字符*似乎表明它的字面匹配? – Starkers

回答

4

只是下面的正則表達式嘗試:

(\*[^*]+\*) 

在你的正則表達式中,你有[.]這實際上是搜索點,因爲在[]它失去了它的特殊上下文,並被視爲正常字符。您最好使用.+,但它也會匹配*個字符。那麼請使用我的上述解決方案。

Live demo

+0

具體來說,'*'是正則表達式中的一個特殊字符,如果要測試文字星號,則需要使用反斜槓進行轉義。 –

+1

@AndrewArnold我用'\ *'逃脫了它。 '[*]'中的星號不需要轉義。 – hsz

+0

我知道;我進一步解釋OP的好處。 –

1

這將捕獲

var text = "asdfasdf *hello*"; 
console.log(text.match(/([*][^*]+[*])/)[1]); 

但是,只有抓住了第一場比賽;

如果希望所有符合

var text = "asdfasdf *hello* asdffdsa *asdf*"; 
var matches = text.match(/([*][^*]+[*])/g); 

if(matches.length > 1) { 
    for(var i=1; i<matches.length; i++) { 
     console.log(matches[i]); 
    } 
} 
+0

@Max閱讀問題,最後 – mrk

+0

好了,這個問題被編輯了,它用來說「我們在javascript中」 – mrk