15

Given a string like:

Recipient: [email protected]
Action: failed
Status: 5.0.0 (permanent failure)
Diagnostic: No

How do I get the "5.0.0" and "permanent failure" only if it's always after Status: ? ?

Thanks

1 Answer 1

36
var regex = /Status: ([0-9\.]+) \(([a-zA-Z ]+)\)/
var result = string.match(regex);
var statusNumber = result[1];
var statusString = result[2];

You should extend these: [0-9\.], [a-zA-Z ] selectors if you expect other characters in these values. For now the first one expects numbers and dots, the second characters and spaces

Sign up to request clarification or add additional context in comments.

4 Comments

Why is this one regEx returning 2 results?
Alsoe ^ and $ should not be there
@haemse It's returning two results because there are two capturing groups in it. Actually it's returning three, the first one (at index 0) being the full match. The ^ and $ wasn't in the original answer. I removed them. Thanks.
I'm sorrry seems like str.match(reg) returns an array of all matches whereas reg.exec returns an array with details for one result. Also all the matching groups.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.