2012-03-27 2 views
0

В javascript мне нужно получить текст внутри пользовательского тега. НапримерJavaScript regexp получить слово между текстами

[tag_ ретвит атр = attr2 «Вал» = «VAL»]

В этом случае мне нужно получить слово «ретвит» только пропуская все другие тексты и другой пример есть

[tag_ доля]

Здесь мне нужно получить слово «share».

Так что будет регулярное выражение для получения этого имени тега в моем случае ??

ответ

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

Вам не нужно '?', Чтобы это не было жадным? ... '/.* \ [tag _ (. *?) \ W. * /' (regex не мое дело: /) – musefan

+0

Вполне возможно - это не повредит, по крайней мере ... –

+0

The. * 'до и после не нужны ... –

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/ или я делаю что-то неправильно ?? –

+0

По-видимому, регулярные выражения JS не понимают, что ']' не имеет особого значения, если это первый символ в классе символов. См. Править. –

Смежные вопросы