2016-03-22 3 views
0

Это мои строки:Как извлечь строку между двумя символами?

[email protected] 
[email protected] 
[email protected] 

То, что я хочу сделать, это извлечение 180, 360 и 480 из этих строк.

Я пробовал этот RegEx _(.*)@, но никаких шансов.

+2

Возможно, это: '_ (\ d *) @' - это всегда строка с цифрами? – sideroxylon

+0

Да, это так. Но в этом есть _ и @ персонажи. Если вы также можете избавиться от них, почему бы вам не отправить ответ? :) – scaryguy

ответ

2

Вы просто хотите группу захвата:

var str = '[email protected]'; 
 
var substr = str.match(/_(\d*)@/); 
 
if (substr) { 
 
    substr = substr[1]; 
 
    console.log(substr); 
 
} 
 

 
//outputs 180

+0

Он также будет бросать 'TypeError', если нет совпадения (Can not read property 1 of null). – Marty

+0

См. Edit - если есть сомнения в том, что строка будет содержать код substr, сначала проверьте сначала совпадение, затем выберите группу захвата. – sideroxylon

1

вы почти получились

_(\d{3})@ 

вам нужно сделать матч на цифрах, либо строка будет также выбрана из другого подчеркивания.

Ofcourse ваш матч будет в \1

0

попробовать это:

(? < = (?!. *)) (. *) (? = @)

Использование просмотра назад (? < =) и смотреть вперед (? =), Так что "_" и "@" не включены в матче.

(?!. *) получает последнее появление «_».

(. *) Соответствует всем, что произошло между последним вхождениями «_» и «@».

Надеюсь, это поможет.

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