4

My string is $text1 = 'A373R12345'
I want to find last none digital number occurrence of this string.
So I use this regular expression ^(.*)[^0-9]([^-]*)
Then I got this result:
1.A373
2.12345

But my expected result is:
1.A373R
(It has 'R')
2.12345

Another example is $text1 = 'A373R+12345'
Then I got this result:
1.A373R
2.12345

But my expected result is:
1.A373R+
(It has '+')
2.12345

I want contain the last none digital number!!
Please help !! thanks!!

1 Answer 1

7
$text1 = 'A373R12345';
preg_match('/^(.*[^\d])(\d+)$/', $text1, $match);
echo $match[1]; // A373R
echo $match[2]; // 12345

$text1 = 'A373R+12345';
preg_match('/^(.*[^\d])(\d+)$/', $text1, $match);
echo $match[1]; // A373R+
echo $match[2]; // 12345

Explanation of regex broken down:

^ match from start of string
(.*[^\d]) match any amount of characters where the last character is not a digit 
(\d+)$ match any digit character until end of string

enter image description here

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

2 Comments

It works fine for my situtaion!! thanks!! Could you explain the regular expression for me? I only know.*[^\d] mean you wan to find the last none digital number
@crypticツ What tool do you have used?

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.