2012-03-27 56 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

相关问题