Regular Expression Examples

對於要做複雜的文字處理的應用程式,規則運算式(Regular Expression)提供有效率、功能強大的解決方法,是不可或缺的工具。話雖如此,要熟記規則運算式的所有技巧並不容易。為方便隨查即用,在此把自己常用的規則運算式範例作個總整理。

浮點數
^([-+]?[0-9]*\.?[0-9]+)$

下列程式碼範例會驗證輸入字串是否為有效的浮點數。
bool IsValidFloat(string inputString)
{
return Regex.IsMatch(inputString, @"^([-+]?[0-9]*\.?[0-9]+)$");
}

日期格式
^((?:19|20)\d\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$

下列程式碼範例會驗證輸入字串是否為有效的日期。
bool IsValidDate(string inputString)
{
Match m = Regex.Match(inputString,
@"^((?:19|20)\d\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$");
if (m.Success)
{
int year = int.Parse(m.Groups[1].Value);
int month = int.Parse(m.Groups[2].Value);
int day = int.Parse(m.Groups[3].Value);
if (day == 31 && (month == 4 || month == 6 || month == 9 || month == 11))
{
return false;
}
else if (day >= 30 && month == 2)
{
return false;
}
else if (month == 2 && day == 29
&& !(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)))
{
return false;
}
else
{
return true;
}
}
return false;
}

電子郵件格式
^([0-9a-z]+[-._+&])*[0-9a-z]+@([0-9a-z]+[.])+[a-z]{2,3}$

下列程式碼範例會驗證輸入字串是否為有效的電子郵件格式。
bool IsValidEmail(string inputString)
{
return Regex.IsMatch(inputString, @"^([0-9a-z]+[-._+&])*[0-9a-z]+@([0-9a-z]+[.])+[a-z]{2,3}$", RegexOptions.IgnoreCase );
}

中文字
[\u4e00-\u9fa5]

擷取 HTML 元素
<([a-z]+)\b[^>]*>(.*?)</\1>

下列程式碼範例會從輸入字串中去除 HTML 標籤。
string StripHtml(string inputString)
{
return Regex.Replace(inputString,@"</?[a-z]+\b[^>]*/?>", string.Empty, RegexOptions.IgnoreCase);
}

擷取 HTML 標籤的屬性
ATTR\s*=\s*(?:"(?<1>[^"]*)"|(?<1>\S+))

下列範例會從 HTML 格式的輸入字串中比對 img 標籤,並擷取出 src 屬性,透過替代的方式將屬性值套用到有加入 onload 屬性及指令碼的 img 標籤,以限制圖片最大寬高。
string FormatPost(string message)
{
message = Regex.Replace(message, @"<img\b*[^>]*?src\s*=\s*(?:""(?<1>[^""]*)""|'(?<1>[^\']*)')\s*/?\s*>", @"<img onload=""javascript:rmwa_img_loaded(this, 600, 200)"" src=""$1"" />", RegexOptions.IgnoreCase);
return message;
}


相關參考資源:
MSDN 規則運算式語言項目
Regular Expression Library
Regular-Expressions.info


Share/Save/Bookmark

0 comments :: Regular Expression Examples

張貼留言