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
答案 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]字符类,因为你不希望在=
字符之后匹配任何内容。