Reddi
Reddi

Reputation: 743

Regex for city and street does not work as expected

So, I would like to validate if the user entered valid city and street. In this case I use the RegExp that you can see below.

'^[a-zA-Z0-9 -]+,[^S\n]*[a-zA-Z0-9 .-]+(?:\n[a-zA-Z0-9 .-]+,[^S\n]*[a-zA-Z0-9 .-]+)*$'

The problem is that, it does not work as expected, because the user is allowed to enter City, which may cause a lot of problems. I want to force the user to provide a value after the comma separator, instead of empty space which should not be allowed.

The values that should be correct are:

1. City-A, Street-B
2. City, Street
3. City, Street-A
4. City-A, Street,
5. City, ul. Street
6. City, ul.Street
...

Any hints, how the above regex could be replaced?

Upvotes: 0

Views: 31

Answers (1)

anubhava
anubhava

Reputation: 784998

You may be able to use this regex to capture both values:

^([a-zA-Z][a-zA-Z0-9 -]*),[ \t]*([a-zA-Z][a-zA-Z0-9 .-]*)[., \t]*$

RegEx Demo

RegEx Breakdown:

  • ^: Start
  • ([a-zA-Z][a-zA-Z0-9 -]*): 1st capture group to match city name that starts with a letter
  • ,: Match a comma
  • [ \t]*: Match 0 or more space or tab
  • ([a-zA-Z][a-zA-Z0-9 .-]*): 2nd capture group to match street name that starts with a letter
  • [., \t]*:Match 0 or more space or tab or dot or comma
  • $: End

Upvotes: 1

Related Questions