ASP中用正则表达式替换字符找字符
作者:admin 日期:2012-07-18
正则表达式应用非常广泛,特别是在文本处理方面,可以把符合条件的字符替换成别的字符,也可以从文本中找出所有符合条件的字符。
最基本的中英文搜索分词,即把用户输入的搜索关键字分割成中文词和英文词,比如用户输入了:NOKIA诺基亚5700,分割后就是3个词NOKIA、诺基亚、5700,这样更容易找到用户需要的信息。
ASP实现代码举例:
keyword=“NOKIA诺基亚5700” '要分割的关键字
partWord="" ’'保存分割出来的每个关键字
set regEx = new RegExp
regEx.Pattern= "[\w]+" '取出英文,并将全部匹配结果存到数组中去
regEx.IgnoreCase = True ‘忽略大小写
regEx.Global = True '全局匹配
Set Matches=regEx.Execute(keyword)
For Each Matche In Matches '所有匹配结果集
partWord=partWord&Matche&"|" '分词
next
set regEx=nothing
set regEx = new RegExp
regEx.Pattern= "[^\w ]+" '取非(英文+空格),这里W后面有个空格
regEx.IgnoreCase = True
regEx.Global = True
Set Matches=regEx.Execute(keyword)
For Each Matche In Matches
partWord=partWord&Matche&"|"
next
处理完后,partWord中所有的关键字用"|"隔开,通过split(partWord,"|")就可以访问每个关键字了。
替换字符时,只有把Execute改成Replace即可。
举例如下:
fString=“NOKIA诺基亚5700” '要替换的字符串文本
Set bjReg=new RegExp
ObjReg.Pattern = "[a-zA-Z0-9]{1,30}" ‘找到大小字母和数字,至少匹配1位,最多匹配30位
fString = ObjReg.Replace(fString,"") '这里把找到的字符替换成空,需要替换成别的,只要在""中输入想替换成的字符就行
set bjReg=nothing
上面例子中没有加入忽略大小写判断,也没加入全局匹配,有需要的在正则表达式下面加上就行。
Asp常用正则表达式:
((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
匹配格式:
11位手机号码
3-4位区号,7-8位直播号码,1-4位分机号
如:12345678901、1234-12345678-1234
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^13\d{9}$/gi手机号正则表达式
public static bool IsValidMobileNo(string MobileNo)
{
const string regPattern = @"^(130|131|132|133|134|135|136|137|138|139)\d{8}$";
return Regex.IsMatch(MobileNo, regPattern);
}
正则表达式--验证手机号码:13[0-9]{9}
实现手机号前带86或是+86的情况:^((\+86)|(86))?(13)\d{9}$
电话号码与手机号码同时验证:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})
提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国手机号码:(86)*0*13\d{9}
提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
提取信息中的中国身份证号码:\d{18}|\d{15}
提取信息中的整数:\d+
提取信息中的浮点数(即小数):(-?\d*)\.?\d+
提取信息中的任何数字 :(-?\d*)(\.\d+)?
提取信息中的中文字符串:[\u4e00-\u9fa5]*
提取信息中的双字节字符串 (汉字):[^\x00-\xff]*
广告位