2016-12-01 2 views
0

Я попытался это (с помощью JavaScript):Проверьте, если строка содержит символ в группе

"[a][\"][\"2]".replace(/(\[)[\"](\])/g, "$1replaced$2") 
//checks for double quote between [ and ] 

и это возвращается

"[a][replaced]["2]" 

так что текущее регулярное выражение проверяет только для одного двух- quote character ("), как проверить, содержит ли строка a " символ в соответствующей группе (между [ и ])?

.

Так результат я ищу меняется от этого:

[a]["]["2] 

в

[a][replaced][replaced2] 

в основном заменяя все двойные кавычки в [ и ]

ответ

1

Вот что вы хочу

"[a][\"][\"2][asdf\"1234]".replace(/(\[)([^\]]*)(\])/g, function (match, leftBr, guts, rightBr) { 
    return leftBr + guts.replace(/\"/g, "replaced") + rightBr; 
}); 

Он захватывает кишки каждой группы кронштейнов и удаляет кавычки.

+0

Это Безразлично 'проверить, содержит ли он символ '' ', если вы поместите букву перед символом' '', '' 'не будет заменен. – Viliami

+0

А, я плохой. обновил мой ответ. –

1

Вот рабочий подход:

\[[^\[]*"[^\]]*\] 

Я тестировал его с этими строками:

[a]["] 
[a]["]["2] 
[a]["]["2]["3]["4] 

Edit: это будет также работать со строкой, как этот

[12"34] 
+0

Это заменяет все, что находится внутри '' '' '' '' и есть способ ** просто ** заменить '' ', не затрагивая остальных? – Viliami

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