2013-12-25 3 views
1

Мне нужно регулярное выражение для соответствия определенным ключевым словам и ближайшему символу «,». Вот мой пример строки:Совпадение строк между ключевыми словами и ранними «,» character

ersion: V3 Subject: [email protected], GIVENNAME=Blob, SURNAME=Bloby, CN=B dddddddddddd, O=sd, C=IR Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 Key: Sun RSA public key, 2048 bits modulus 

теперь мне нужно, чтобы соответствовать слова между EMAILADDRESS и следующий, который будет «[email protected]» (для слов между этими двумя точками не существует каких-либо ограничений они могли быть любые символы, что было бы целесообразным регулярное выражение для этого

+2

Вы должны включили свои попытки в вашем вопросе ... – Jerry

ответ

2

Использования захватывая группу:.?.

var str = 'ersion: V3 Subject: [email protected], GIVENNAME=Blob, SURNAME=Bloby, CN=B dddddddddddd, O=sd, C=IR Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 Key: Sun RSA public key, 2048 bits modulus' 
str.match(/EMAILADDRESS=([^,]+)/i)[1] 
// => "[email protected]" 
  • [^,] матча любого исключения символов ,
+0

Что бы решение, если бы я нужно сопоставить ключевое слово, игнорирующее случай? например, адрес электронной почты? – user435245

+0

@ user435245, Добавьте флаг 'i' (Игнорировать регистр) в конце литерала регулярных выражений. Я изменил код, включив флаг 'i'. – falsetru

+0

Что такое выражение simillar в java? – user435245

1

Просто для полноты картины,

var data = "version: V3 Subject: [email protected]", result = []; 
data.split(",").forEach(function(currentItem) { 
    var idx = currentItem.indexOf("EMAILADDRESS="); 
    if (idx !== -1) { 
     result.push(currentItem.split("EMAILADDRESS=", 1)[1]); 
    } 
}); 

console.log(result); 

Выход

[ '[email protected]' ] 
+0

Что такое переменная 'len'? кажется излишним. –

+0

@ MichałRybak Упс. У меня была другая идея, когда я писал этот ответ ... Я забыл удалить 'len'. Благодаря :) – thefourtheye

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