2012-03-27 96 views
0

在javascript中,我需要獲取自定義標記中的文本。例如JavaScript正則表達式獲取文本之間的詞

[tag_ 轉推 ATTR = 「VAL」 attR2位= 「VAL」]

在這種情況下,我需要得到的單詞 「銳推」 只跳過所有其他文本和另一個例子是,

[tag_ 份額]

在這裏,我需要獲得「分享」一詞。

那麼在我的情況下獲取該標籤名稱的正則表達式是什麼?

回答

1

類似於/\[tag_([a-z0-9_]+)(?:\s+|\])/

var tag = '[tag_retweet attr="val" attr2="val"]'; 
var match = tag.match(/\[tag_([a-z0-9_]+)(?:\s+|\])/); 
window.alert(match[1]);​ // alerts "retweet" 
1

正則表達式來捕捉這將是:

/.*\[tag_(.*?)\W.*/

這任何字符匹配高達[tag_結束,然後開始捕捉任何caracters直到遇到非單詞字符,那麼任何其他字符。比賽將只包含相關的部分。

這樣使用它:

myString.match(/.*\[tag_(.*?)\W.*/)[1]

+1

你不需要'?'來阻止它貪婪嗎? ...'/.* \ [標記_(。*?)\ W。* /'(正則表達式不是我的東西,雖然:/) – musefan 2012-03-27 13:37:21

+0

很可能 - 它不會傷害至少... – 2012-03-27 13:40:21

+0

'。 *'前後都是不必要的... – 2012-03-27 13:42:36

1

基本上,你正在尋找[tag_後會發生什麼,直到下一個空格(或標籤的末尾)

所以:

var tag = '[tag_retweet attr="val" attr2="val"]'; 
// or var tag = '[tag_share]'; 
var match = tag.match(/\[tag_(.*?)[\] ]/)[1]; 
+0

我只得到'null' http://jsfiddle.net/vaakash/jf6Xe/或者我做錯了什麼? – 2012-03-27 13:40:35

+0

顯然,JS正則表達式不理解'''如果它是角色類中的第一個字符,它就沒有特別的意義。請參閱編輯。 – 2012-03-27 13:41:56

相關問題