Это мои строки:Как извлечь строку между двумя символами?
[email protected]
[email protected]
[email protected]
То, что я хочу сделать, это извлечение 180, 360 и 480 из этих строк.
Я пробовал этот RegEx _(.*)@
, но никаких шансов.
Это мои строки:Как извлечь строку между двумя символами?
[email protected]
[email protected]
[email protected]
То, что я хочу сделать, это извлечение 180, 360 и 480 из этих строк.
Я пробовал этот RegEx _(.*)@
, но никаких шансов.
Вы просто хотите группу захвата:
var str = '[email protected]';
var substr = str.match(/_(\d*)@/);
if (substr) {
substr = substr[1];
console.log(substr);
}
//outputs 180
Он также будет бросать 'TypeError', если нет совпадения (Can not read property 1 of null). – Marty
См. Edit - если есть сомнения в том, что строка будет содержать код substr, сначала проверьте сначала совпадение, затем выберите группу захвата. – sideroxylon
вы почти получились
_(\d{3})@
вам нужно сделать матч на цифрах, либо строка будет также выбрана из другого подчеркивания.
Ofcourse ваш матч будет в \1
Попробуйте
var str = "[email protected]";
var matches = str.match(/_\[email protected]/).map(function(value){return value.substring(1,value.length-1);});
document.body.innerHTML += JSON.stringify(matches,0,4);
попробовать это:
(? < = (?!. *)) (. *) (? = @)
Использование просмотра назад (? < =) и смотреть вперед (? =), Так что "_" и "@" не включены в матче.
(?!. *) получает последнее появление «_».
(. *) Соответствует всем, что произошло между последним вхождениями «_» и «@».
Надеюсь, это поможет.
Возможно, это: '_ (\ d *) @' - это всегда строка с цифрами? – sideroxylon
Да, это так. Но в этом есть _ и @ персонажи. Если вы также можете избавиться от них, почему бы вам не отправить ответ? :) – scaryguy