28

I'm trying to use regex to check that the first and last characters in a string are alpha characters between a-z.

I know this matches the first character:

/^[a-z]/i

But how do I then check for the last character as well?

This:

/^[a-z][a-z]$/i

does not work. And I suspect there should be something in between the two clauses, but I don't know what!

Peter Mortensen
  • 30,030
  • 21
  • 100
  • 124
Jason
  • 305
  • 1
  • 3
  • 6

3 Answers3

57

The below regex will match the strings that start and end with an alpha character.

/^[a-z].*[a-z]$/igm

The a string also starts and ends with an alpha character, right? Then you have to use the below regex.

/^[a-z](.*[a-z])?$/igm

DEMO

Explanation:

^             #  Represents beginning of a line.
[a-z]         #  Alphabetic character.
.*            #  Any character 0 or more times.
[a-z]         #  Alphabetic character.
$             #  End of a line.
i             #  Case-insensitive match.
g             #  Global.
m             #  Multiline
Peter Mortensen
  • 30,030
  • 21
  • 100
  • 124
Avinash Raj
  • 166,785
  • 24
  • 204
  • 249
10

You can do it as follows to check for the first and last characters and then anything in between:

/^[a-z].*[a-z]$/im

DEMO

sshashank124
  • 29,826
  • 8
  • 62
  • 75
0
 var str = "Regular";
//following code should return true as first and last characters are same
var re = /(^[a-zA-Z])(.*)\1$/gi;

console.log(re.test(str); //true

Match 1 : Regular
Group 1 : (^[a-zA-Z]) = R
Group 2 : (.*) = egula
\1$ : Match the same what is caught in group 1 at the end = r