正则表达式
来源:互联网 发布:linux解压缩tar.bz2 编辑:程序博客网 时间:2024/04/29 17:15
【1.2】正则表达式的作用
【2.1】 匹配不同类型的字符
【2.2】 定位控制字符
【2.3】 指定重复字符
【2.4】特殊控制类
| :指定字符替换,即该位置可以是|两边的任一个表达式
【2.5】特殊字符转义序列
三、正则表达式的高级应用
【3.1】分组
(/d{1,3}/.){3}/d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:/d{1,3}匹配1到3位的数字,(/d{1,3}/.}{3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(/d{1,3})。
实例:
【/b(/w+)/b/s+/1/b】可以用来匹配重复的单词,像gogo, kitty kitty。【/b(/w+)/b】匹配一个单词,【/s+】匹配1个或多个空白符,【/1】表示前面匹配的那个单词。
你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>/w+)(或者把尖括号换成'也行:(?'Word'/w+)),这样就把/w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用/k<Word>,所以上一个例子也可以写成这样:/b(?<Word>/w+)/b/s+/k<Word>/b。
【3.3】零宽断言
下面这个例子同时使用了这两种断言:(?<=/s)/d+(?=/s)匹配以空白符间隔的数字(再次强调,不包括这些空白符)。
【捕获】
(exp)匹配exp,并捕获文本到自动命名的组里
(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
【零宽断言】
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
【注释】
(?#comment) 这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
四、常用的正则表达式
decmal:"^([+-]?)\\d*\\.\\d+$",//浮点数
decmal1:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$",//正浮点数
decmal2:"^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",//负浮点数
decmal3:"^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",//浮点数
decmal4:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",//非负浮点数(正浮点数+ 0)
decmal5:"^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",//非正浮点数(负浮点数+ 0)
intege:"^-?[1-9]\\d*$",//整数
intege1:"^[1-9]\\d*$",//正整数
intege2:"^-[1-9]\\d*$",//负整数
num:"^([+-]?)\\d*\\.?\\d+$",//数字
num1:"^[1-9]\\d*|0$",//正数(正整数+ 0)
num2:"^-[1-9]\\d*|0$",//负数(负整数+ 0)
ascii:"^[\\x00-\\xFF]+$",//仅ACSII字符
chinese:"^[\\u4e00-\\u9fa5]+$",//仅中文
color:"^[a-fA-F0-9]{6}$",//颜色
date:"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",//日期
email:"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",//邮件
idcard:"^[1-9]([0-9]{14}|[0-9]{17})$",//身份证
ip4:"^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",//ip地址
letter:"^[A-Za-z]+$",//字母
letter_l:"^[a-z]+$",//小写字母
letter_u:"^[A-Z]+$",//大写字母
五、JS中的RegExp对象
【5.1】创建RegExp对象实例
varregObj =newRegExp(“pattern” [,” flags ”] );
参数说明:
pattern:必选项,正则表达式的字符串。
flags:可选项,是一些标志组合。
varregObj =/pattern/[flags];
regObj.test(string );//验证通过则返回true,不通过返回false
【5.2】RegExp的方法
【5.2.1】 test()
var filter = /一枪爆头/g;//将受限制的词句组成正则表达式
var said = "他被人一枪爆头了";//将接受检查的语句
if( filter.test( said ) )//如果被检查语句中存在受限词句
{
alert( "该语句中有限制级词语,系统已经过滤!" );//显示警告
}
else // 否则
{
alert( said ); //输出原话
}
12 </script>
【5.2.2】exec()方法
<script language="javascript">
varreg = /.o./g;//寻找字符o前后接任意字符组成的有三个字符的字符串
varstr = "How are you?"//源串
var result = new Array();//用于接收结果
while( reg.exec(str) != null )//执行匹配操作,如果找到匹配则继续找下一项
{
result.push(RegExp.lastMatch );//添加结果
}
alert( result ); // 输出找到的匹配项
</script>
【5.2.3】match方法
<script language="javascript">
varshowStr="";//定义一个变量,并赋空值
varstr = "this word isOKOKOKOKokokokok!!!";//给变量赋初值
varsearchStr = /(OK){2}/gi;//分组的正则表达式
var result=str.match(searchStr);//查找匹配
for (var i = 0; i <result.length; i++)//循环访问arrdata对象
{
showStr+=result[i]+"\n";//显示信息
}
alert("一共有"+result.length+"组匹配\n"+showStr);//显示最后匹配的结果
</script>
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- c++中有个清屏函数,system(“cls”)
- 归并排序
- visual studio 2008/2010安装在vm中时,打开项目或者调试完成后会假死一段时间
- tcp三次握手
- Netbeans UTF-8编码问题
- 正则表达式
- c++中关于逻辑预算的优先级问题
- 【VC编程技巧】动态链接库☞1.3MFC扩展类的导出
- 网页加载提速
- java将数据库结果集封装成Map, java获取数据库字段 (修定)
- svn的配置和使用
- 静态库变为动态库,外部符号如何生成?
- MPEG和WMV编码的视频文件大小相差巨大
- 把canvas搞大了,出问题了