JavaScript正则表达式匹配[[quote] [/ quote]]

时间:2014-11-07 18:12:33

标签: javascript regex

var quote = 'some text here [[quote=bob]This is some text bob wrote[/quote]] other text here';

我正试图获得[[quote=bob]This is some text bob wrote[/quote]]

我正在使用:     match(/[[quote=(.*?)](.*?)[/quote]]/)[1]

但它给了我some text here [[quote=bob]This is some text bob wrote[/quot

2 个答案:

答案 0 :(得分:3)

试试这个:

var quote = 'some text here [[quote=bob]This is some text bob wrote[/quote]] other text here';

console.log( quote.match(/(\[\[quote=(.*?)\](.*?)\[\/quote\]\])/) );
// [1] => "[[quote=bob]This is some text bob wrote[/quote]]"
// [2] => "bob"
// [3] => "This is some text bob wrote"

答案 1 :(得分:1)

这里的问题是[是正则表达式中的保留字符,因此您必须将其转义为将其用作“常规”字符。

这是一个开始,这将与您的变量引用匹配[quote = bob]。

quote.match(/\[quote=[a-z]*\]/)

这是完整,正确和安全的版本。

string.match(/\[quote=[a-z]*\]([^\[]*)\[\/quote\]/)

返回正确的字符串,包括周围的[quote]标签作为第一个结果,只有内部字符串作为第二个结果。

我还使用了[a-z]字符类,因为你不希望在=字符之后匹配任何内容。