//Microsoft Public License (Ms-PL)
//http://c4fdevkit.codeplex.com/license
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace C4F.DevKit.WebServices
{
/// <summary>
/// Provides useful methods like conversion methods.
/// </summary>
public static class Utility
{
/// <summary>
/// Validates the zip code
/// </summary>
/// <param name="zipCode">Zip code</param>
/// <returns>True if zip code is valid</returns>
public static bool ValidateZipCode(string zipCode)
{
if (String.IsNullOrEmpty(zipCode))
return false;
return Regex.IsMatch(zipCode, "(^[0-9]{5}$)|(^[0-9]{5}-[0-9]{4}$)");
}
}
}
Regular Expressions
Is valid url with regular expression
//The MIT License (MIT)
//http://arolibraries.codeplex.com/license
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace AroLibraries.ExtensionMethods.Strings
{
public static class StringExt
{
public static bool Ext_IsValidUrl(this string text)
{
///Uri temp; return Uri.TryCreate(text);
Regex rx = new Regex(@"http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?", RegexOptions.Compiled);
return rx.IsMatch(text);
}
}
}
Regular expression with For each and split
/*
Learning C#
by Jesse Liberty
Publisher: O'Reilly
ISBN: 0596003765
*/
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace RegularExpressions
{
public class TesterRegularExpressions
{
public void Run()
{
string s1 =
"One,Two,Three Liberty Associates, Inc.";
Regex theRegex = new Regex(" |, |,");
StringBuilder sBuilder = new StringBuilder();
int id = 1;
foreach (string subString in theRegex.Split(s1))
{
sBuilder.AppendFormat(
"{0}: {1}
", id++, subString);
}
Console.WriteLine("{0}", sBuilder);
}
[STAThread]
static void Main()
{
TesterRegularExpressions t = new TesterRegularExpressions();
t.Run();
}
}
}
Provides static validation methods for strings.
//http://academicplanner.codeplex.com/
//Microsoft Public License (Ms-PL)
using System;
using System.Text.RegularExpressions;
namespace AcademicPlanner.Framework.Libraries.Validation
{
/// <summary>
/// Provides static validation methods for <c>string</c>s.
/// </summary>
/// <version>1.0</version>
/// <since>1.0</since>
public static class StringValidator
{
/// <summary>
/// Regular expression for a valid email address: "^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+-+)|([A-Za-z0-9]+.+)|([A-Za-z0-9]+++))*[A-Za-z0-9]+@((w+-+)|(w+.))*w{1,63}.[a-zA-Z]{2,6}$".
/// </summary>
/// <version>1.0</version>
/// <since>1.0</since>
public static readonly string EMAIL_REGEXP = @"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+-+)|([A-Za-z0-9]+.+)|([A-Za-z0-9]+++))*[A-Za-z0-9]+@((w+-+)|(w+.))*w{1,63}.[a-zA-Z]{2,6}$";
/// <summary>
/// Regular expression for words with letters only: "^([a-zA-Z]+s*)+$".
/// </summary>
/// <version>1.0</version>
/// <since>1.0</since>
public static readonly string ALPHA_REGEXP = @"^([a-zA-Z]+s*)+$";
/// <summary>
/// Regurlar expression for words with letters and digits and "_" only: "^([a-zA-Z0-9_]+s*)+$".
/// </summary>
/// <version>1.0</version>
/// <since>1.0</since>
public static readonly string ALNUM_REGEXP = @"^([a-zA-Z0-9_]+s*)+$";
/// <summary>
/// Checks whether the given <c>string</c> is blank or not i.e.
/// it contains at least one character.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <returns>Whether the <c>string</c> is blank or not.</returns>
/// <seealso cref="M:ContainsAtLeast"/>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool IsNotBlank(string pVal)
{
return ContainsAtLeast(pVal, 1);
}
/// <summary>
/// Checks whether the given <c>string</c> is a valid email address or not i.e.
/// it matches the <c>EMAIL_REGEXP</c> regualar expression.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <returns>Whether the <c>string</c> is a valid email address or not.</returns>
/// <seealso cref="M:Matches"/>
/// <seealso cref="P:EMAIL_REGEXP"/>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool IsEmailAddress(string pVal)
{
return Matches(pVal, EMAIL_REGEXP);
}
/// <summary>
/// Checks whether the given <c>string</c> matches the given regualar expression.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <param name="pRegex">The regular expression to check against.</param>
/// <returns>Whether the <c>string</c> matches the given regualar expression.</returns>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool Matches(string pVal, string pRegex)
{
return Regex.IsMatch(pVal, pRegex);
}
/// <summary>
/// Checks whether the given <c>string</c> is words with letters only i.e.
/// it matches the <c>ALPHA_REGEXP</c> regualar expression.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <returns>Whether the <c>string</c> is words with letters only or not.</returns>
/// <seealso cref="M:Matches"/>
/// <seealso cref="P:ALPHA_REGEXP"/>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool IsAlpha(string pVal)
{
return Matches(pVal, ALPHA_REGEXP);
}
/// <summary>
/// Checks whether the given <c>string</c> is words with letters and digits only i.e.
/// it matches the <c>ALNUM_REGEXP</c> regualar expression.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <returns>Whether the <c>string</c> is words with letters and digits only or not.</returns>
/// <seealso cref="M:Matches"/>
/// <seealso cref="P:ALNUM_REGEXP"/>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool IsAlphaNumeric(string pVal)
{
return Matches(pVal, ALNUM_REGEXP);
}
/// <summary>
/// Checks whether the given <c>string</c> contains at least the the given
/// number of characters.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <param name="pMinChars">The minimum number of characters the <c>string</c> should have.</param>
/// <returns>Whether the <c>string</c> contains at least the the given number of characters.</returns>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool ContainsAtLeast(string pVal, int pMinChars)
{
return (pVal.Trim().Length >= pMinChars);
}
/// <summary>
/// Checks whether the given <c>string</c> contains at most the the given
/// number of characters.
/// </summary>
/// <param name="pVal">The <c>string</c> to check.</param>
/// <param name="pMaxChars">The maximum number of characters the <c>string</c> should have.</param>
/// <returns>Whether the <c>string</c> contains at most the the given number of characters.</returns>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool ContainsAtMost(string pVal, int pMaxChars)
{
return (pVal.Trim().Length <= pMaxChars);
}
/// <summary>
/// Checks whether two <c>string</c>s are identical i.e. have the same characters
/// after trimming.
/// </summary>
/// <param name="pVal">The first <c>string</c>.</param>
/// <param name="pComparee">The second <c>string</c>.</param>
/// <returns>Whether the two <c>string</c>s are identical or not.</returns>
/// <version>1.0</version>
/// <since>1.0</since>
public static bool IsIdenticalTo(string pVal, string pComparee)
{
return pVal.Trim().Equals(pComparee.Trim());
}
}
}
Clean Telephone Number with Regular expression
///////////////////////////////////////////////////////////////////////////////////////////////
//
// This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler
//
// Copyright (c) 2005-2008, Jim Heising
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// * Neither the name of Jim Heising nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Xml;
namespace WOSI.Utilities
{
public class StringUtils
{
public static string CleanTelephoneNumber(string inputString)
{
return Regex.Replace(inputString, @"[()-.s]", "");
}
}
}
Format Phone Number
///////////////////////////////////////////////////////////////////////////////////////////////
//
// This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler
//
// Copyright (c) 2005-2008, Jim Heising
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// * Neither the name of Jim Heising nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Xml;
namespace WOSI.Utilities
{
public class StringUtils
{
/// <summary>
/// Determines whether the supplied <paramref name="number"/> is an integer.
/// </summary>
/// <param name="number">The object to check.</param>
/// <returns>
/// <see lang="true"/> if the supplied <paramref name="number"/> is an integer.
/// </returns>
public static bool IsInteger(object number)
{
return (number is Int32 || number is Int16 || number is Int64 || number is UInt32
|| number is UInt16 || number is UInt64 || number is Byte || number is SByte);
}
/// <summary>
/// Determines whether the supplied <paramref name="number"/> is a decimal number.
/// </summary>
/// <param name="number">The object to check.</param>
/// <returns>
/// <see lang="true"/> if the supplied <paramref name="number"/> is a decimal number.
/// </returns>
public static bool IsDecimal(object number)
{
return (number is Single || number is Double || number is Decimal);
}
/// <summary>
/// Determines whether the supplied <paramref name="number"/> is of numeric type.
/// </summary>
/// <param name="number">The object to check.</param>
/// <returns>
/// <c>true</c> if the specified object is of numeric type; otherwise, <c>false</c>.
/// </returns>
public static bool IsNumber(object number)
{
return (IsInteger(number) || IsDecimal(number));
}
public static string FormatPhoneNumber(string inputString)
{
string outputNumber = "";
string numberString = "";
// Remove any spaces
//inputString = inputString.Replace(" ", "");
// Get number count
int numberCount = 0;
foreach (Char numberChar in inputString)
{
if (Char.IsNumber(numberChar))
{
numberCount++;
numberString += numberChar.ToString();
}
}
if (Regex.IsMatch(inputString, @"(?<First>2[0-4]d|25[0-5]|[01]?dd?).(?<Second>2[0-4]d|25[0-5]|[01]?dd?).(?<Third>2[0-4]d|25[0-5]|[01]?dd?).(?<Fourth>2[0-4]d|25[0-5]|[01]?dd?)"))
{
outputNumber = inputString;
}
else if (numberCount == 7)
{
outputNumber = numberString.Substring(0, 3) + "-" + numberString.Substring(3, 4);
}
else if (numberCount == 10)
{
outputNumber = "(" + numberString.Substring(0, 3) + ") " + numberString.Substring(3, 3) + "-" + numberString.Substring(6, 4);
}
else if (numberCount == 11)
{
outputNumber = numberString.Substring(0, 1) + " (" + numberString.Substring(1, 3) + ") " + numberString.Substring(4, 3) + "-" + numberString.Substring(7, 4);
}
else
outputNumber = inputString;
return outputNumber;
}
}
}