## Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

• Help others & share knowledge
• Earn cash & points
Solved

Posted on 2013-05-20
343 Views
This code does not work if there are special characters like colons or hyphens before the matching phone number.

``````Imports System.Web
Partial Class test
Inherits System.Web.UI.Page
Protected Function REGEX(text As String) As String
Dim input As String = ""

input =
"This works 423-555-1212" & vbCrlf &
"This works (423) 555-1212" & vbCrlf &
"This works 4235551212" & vbCrlf &
"" & vbCrlf &
"This looses the hyphen - 4235551212" & vbCrlf &
"This losses the space before the phone number: 423-555-1212" & vbCrlf &
"This losses the space before the phone number: (423) 555-1212" & vbCrlf &
"This losses the space before the phone number: 4235551212" & vbCrlf &
"(This losses the space before the phone number) 423-555-1212" & vbCrlf &
"This losses the space before the phone number; 423-555-1212"

' Phone Numbers
input = RegularExpressions.Regex.Replace(input, "(\s?)(?!<\d[^a-z\d\n]{0,2})1?[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)[^a-z\n\d,]*(\d)(?![a-z\d\n]{0,2}\d)", "\$1\$2\$3\$4.\$5\$6\$7.\$8\$9\$10\$11")

Return input

End Function
Protected Sub _Index_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles me.load
out.Text = REGEX(Request.Form("c"))
End Sub

End Class
``````
0
Question by:hankknight
• 3
• 2

LVL 75

Expert Comment

ID: 39181306
What is supposed to happen, or what should the data look like after the function is run?
0

LVL 16

Author Comment

ID: 39181381
This:
``````This works 423-555-1212
This works (423) 555-1212
This works 4235551212
This looses the hyphen - 4235551212
This losses the space before the phone number: 423-555-1212
This losses the space before the phone number: (423) 555-1212
This losses the space before the phone number: 4235551212
(This losses the space before the phone number) 423-555-1212
This losses the space before the phone number; 423-555-1212
``````
Becomes this:
``````This works 423.555.1212
This works 423.555.1212
This works 423.555.1212
This looses the hyphen 423.555.1212
This losses the space before the phone number423.555.1212
This losses the space before the phone number423.555.1212
This losses the space before the phone number423.555.1212
(This losses the space before the phone number423.555.1212
This losses the space before the phone number423.555.1212
``````
But it should become this:
``````This works 423.555.1212
This works 423.555.1212
This works 423.555.1212
This looses the hyphen - 423.555.1212
This losses the space before the phone number: 423.555.1212
This losses the space before the phone number: 423.555.1212
This losses the space before the phone number: 423.555.1212
(This losses the space before the phone number) 423.555.1212
This losses the space before the phone number; 423.555.1212
``````
Notice how certain chararacters including spaces, hyphen, and colons are lost if there is a special character before the phone number.
0

LVL 75

Expert Comment

ID: 39181457
You pattern seems overly-complicated. Can we try with this instead:

``````...

' Phone Numbers
input = RegularExpressions.Regex.Replace(input, "\b(?:(?<=\d{3})-(?=\d{4})|(?<=\d{3})-(?=\d{3}))\b", ".")  ' Replace delimited phone numbers
input = RegularExpressions.Regex.Replace(input, "\b(\d{3})(\d{3})(\d{4})\b", "\$1.\$2.\$3")  ' Replace non-delimited phone numbers

...
``````
0

LVL 16

Author Comment

ID: 39181515
Your pattern does not work with this:
``````Phone Number: (423) 555-1212
``````
It should become:
``````Phone Number: 423.555.1212
``````
0

LVL 75

Accepted Solution

käµfm³d   👽 earned 500 total points
ID: 39181963
Add one more line after the other two:

``````input = RegularExpressions.Regex.Replace(input, "\((\d{3})\)\s*(?=\d{3})", "\$1.")  ' Replace parenthesized area codes
``````
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Whatever be the reason, if you are working on web development side,  you will need day-today validation codes like email validation, date validation , IP address validation, phone validation on any of the edit page or say at the time of registration…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…