[转]js 正则表达式
一、正则表达式中包括的元素
1、原子(普通字符:a-z A-Z 0-9 、原子表、 转义字符)
2、元字符 (有特殊功能的字符)
3、模式修正符 (系统内置部分字符 i 、m、S、U…)
二、正则表达式中的“原子”
1、a-z A-Z _ 0-9 //最常见的字符
2、(abc) (skd) //用圆括号包含起来的单元符合,匹配整体
3、[abcs] [^abd] //用方括号包含的原子表,匹配任意一个字符,原子表中的^代表排除或相反内容
4、转义字符
\d 包含所有数字[0-9]
\D 除所有数字外[^0-9]
\w 包含所有英文字符[a-zA-Z_0-9]
\W 除所有英文字符外[^a-zA-Z_0-9]
\s 包含空白区域如回车、换行、分页等 [\f\n\r]
三、模式修正符
0、g 匹配所有符合条件
1、i 正则内容在匹配时候不区分大小写(默认是区分的)
2、m 在匹配首内容或者尾内容时候采用多行识别匹配
如:$preg = “/^a/m”; $str =”bb\naa”;可以匹配第二行a,$str双引号
3、s 将转义回车取消是为单行匹配如.( 匹配除换行符 \n之外的任何单字符) 匹配的时候,可以忽略\n
4、x 忽略正则中的空白
5、A 强制从头开始匹配(第一行)
6、D 强制$匹配尾部无任何内容如:匹配到\n之后
7、U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,
常用在采集程序上的正则表达式
如:$str="<a><c>"; $preg 01= ‘/<(.*)>/U’; 和 $preg02 = ‘/<.*?>/’; 结果都为:a
8、$str = ‘2009-01-01\2010\01-01’; $preg = ‘/2009(.*?)01\\1(01)(.*?)2010\\3(01)\\1(01)/’;
//1、//2、//3代表内存中第几个匹配过的内容
//js 正则表达式 汉字 匹配
1、在破解版调试模式下,正则表达式会出现错误匹配,应将其编译在EXE文件再看运行结果
2、暂时用到的正则表达式串:
^(\()?(一|二|三|四|五|六|七|八|九|十|[0-9]{1,4})(\))?(?!○)所有段落总纲 ,注意此处 句首符^非常宽松的匹配,只要在首句内都可匹配(如果去掉{1,4}试试便如此)
(?<=被查单位名称).+?(?= 经济性质)
[\一-\?]+ 非汉字
[\xb0-\xf7][\xa0-\xfe] 汉字
[^\xb0-\xf7][^\xa0-\xfe] 非汉字
([^\xB0-\xf7].)* 非汉字 更准确
(?<=被查单位名称
)([\xB0-\xf7][\xA1-\xFE])+ 取得被查单位名称后所表明的单位名称
(?<=被查单位名称
)([\xB0-\xf7].)+
(?<=被查单位名称([^\xB0-\xf7].))([\xB0-\xf7].)+ 最优解
(?<=被查单位名称([-?]{2}))[^-?]+ 最最优解 (?<=被查单位名称.{2})[^-?]+
(?<=检查类型([-?]{2}))[^-?]+
([^-?][^-?])+
(?<=检查实施时间([-?]{2}))20\d{2}\.1?\d.[123]?\d
20\d{2}年1?\d月[123]?\d日至20\d{2}年1?\d月[123]?\d日(?=的纳税情况) 稽查所属期限
(?<=地方教育发展费)[^\d]{0,2}\d+.?\d{0,2} 地方教育发展费 带冒号
(?<=纳税人基本情况).+?(?=(\s.{0,30}发现的问题)) 取纳税人基本情况三段内容,看样子回车符也匹配空白符\s
(?<=纳税人基本情况).+?(?=二)
(?<=(一)发现的问题).+?(?=(二))
(?<=年度$).+(?=\s.{4,8}年度$) 取得2007年度的违法事实
\x20 稽查报告在处理之前先得用此将空格去除
.子程序 子_全文替换, 文本型, , 这是简单的正则表达式搜索代码,你可以根据需要进行改进。
.参数 欲被替换文本, 文本型
.局部变量 正则表达式, 正则表达式
正则表达式.创建 ("\x20", )
返回 (正则表达式.替换 (欲被替换文本, "", 1, , 真, 真))
要去掉段尾的标点符号,去除缴纳改为缴 为方便搜索 改二00八年度为2008年度
(?<=应....地方教育发展费).+?[元,,] []也可当作右方向预搜索用 经检验,可当右预搜索的观点是错的,它只能当作2个单字节用
(?<=地方教育发展费|费:).+?(?=元|,|,)
^(\()?(一|二|三|四|五|六|七|八|九|十|[0-9])(\))?(、?)?(?=[\xaa-\xf7]|20) 大编号
严重观注: \d也会在易语言中匹配汉字某一半边
3、']' 字符如果不是第一项,则将结束一个列表。要在列表中匹配 ']' 字符,请将其放在第一项,紧跟在开始的 '[' 后面。
'\' 仍然作为转义符。要匹配 '\' 字符,请使用 '\\'。
如果想在方括号表达式中包括连字符,则必须使用下述方法之一:
使用反斜杠将其转义:
[\-]
将连字符放在括号列表的开始和结束位置。下面的表达式能匹配所有的小写字母和连字符:
[-a-z]
[a-z-]
创建一个范围,其中开始字符的值小于连字符,而结束字符的值等于或大于连字符。下面两个正则表达式都满足这一要求:
[!--]
[!-~]
同样,通过在列表开始处放置一个插入符(^),就可以查找所有不在列表或范围中的字符。如果该插入符出现在列表的其他位置,则匹配其本身,没有任何特殊含义
你可能认为下面的 JScript 和 VBScript 表达式将匹配位于一行的开始和结束位置且后跟一个或两个数字的 'Chapter' 或 'Section':/^Chapter|Section [1-9][0-9]{0,1}$/
"^Chapter|Section [1-9][0-9]{0,1}$"不幸的是,真正的情况是上面所示的正则表达式要么匹配位于一行开始处的单词 'Chapter',要么匹配一行结束处的后跟任何数字的 'Section'。如果输入字符串为 'Chapter 22',上面的表达式将只匹配单词 'Chapter'。如果输入字符串为 'Section 22',则该表达式将匹配 'Section 22'。但这种结果不是我们此处的目的,因此必须有一种办法来使正则表达式对于所要做的更易于响应,而且确实也有这种方法。可以使用圆括号来限制选择的范围,也就是说明确该选择只适用于这两个单词 'Chapter' 和 'Section'。不过,圆括号同样也是难处理的,因为它们也用来创建子表达式,有些内容将在后面关于子表达式的部分介绍。通过采用上面所示的正则表达式并在适当位置添加圆括号,就可以使该正则表达式既可以匹配 'Chapter 1',也可以匹配 'Section 3'。下面的正则表达式使用圆括号将 'Chapter' 和 'Section' 组成一组,所以该表达式才能正确工作。对 JScript 为:/^(Chapter|Section) [1-9][0-9]{0,1}$/对 VBScript 为:"^(Chapter|Section) [1-9][0-9]{0,1}$"
可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript:/^(?:Chapter|Section) [1-9][0-9]{0,1}$/对 VBScript:"^(?:Chapter|Section) [1-9][0-9]{0,1}$"
a(b(?i)c)d 增加 i - IGNORECASE 模式,只对 c 起作用。表达式可以匹配 "abcd" 和 "abCd"
非捕获组 (?:xxx)
表达式 方向 说明 (?=xxx) 正向预搜索(向右) 正向预搜索,判断当前位置右侧是否能匹配指定表达式 (?!xxx) 正向预搜索否定,判断当前位置右侧是否不能够匹配指定表达式 (?<=xxx) 反向预搜索(向左) 反向预搜索,判断当前位置左侧是否能够匹配指定表达式 (?<!xxx) 反向预搜索否定,判断当前位置左侧是否不能够匹配指定表达式 记住,所有预搜索在易语言中必须是固定长数
独立表达式 (?>pattern)独立表达式所匹配的内容,与将它单独匹配时匹配的内容一致。不管之后的表达式是否匹配成功,独立表达式内部都不进行回退,都不会再次尝试匹配
条件表达式根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。--------------------------------------------------------------------------------说明可以用于条件表达式的条件有两种类型:指定分组(group)是否进行了捕获。 文本中当前位置是否可以与指定表达式匹配。 条件表达式的格式及说明:表达式 条件特点 条件说明 (?(1)yes|no) 条件为数字 分组1如果有捕获,则进行 yes 部分匹配,否则 no 部分 (?(?=a)aa|bbb) 条件为预搜索 如果当前位置右侧是 a,则进行匹配 aa,否则匹配 bbb (?(xxx)aa|bbb) 不与分组命名吻合 如果不与任何分组命名吻合,则视为 (?=xxx) 相同 (?(name)yes|no) 与分组命名吻合 如果与某分组命名吻合,则视为判断该分组是否进行捕获 另外:如果表达式为 RIGHTTOLEFT 模式,那么 (?(xxx)aa|bbb) 与 (?(?<=xxx)aa|bbb) 相同。 如果条件表达式只有一个选择项,那么这个选项是在条件成立时进行匹配。 如果条件表达式中,使用“|”进行分隔的选项多于2个,则只有第一个“|”被视为条件表达式选项分隔符。比如: (?(?=xxx)yes|no1|no2),条件成立时,匹配 yes 部分,否则匹配 "no1|no2"。
[转]js 正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式
1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet' href='bootstrap-3.3.0-dist/dist/css ...
- js正则表达式图形化工具-rline
github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- JS正则表达式大全
转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...
- js正则表达式replace里有变量的解决方法用到RegExp类
一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...
- JS正则表达式验证账号、手机号、电话和邮箱
JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...
- 初识JS正则表达式
初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...
- 常用JS正则表达式
常用JS正则表达式 收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水 ...
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
随机推荐
- opacity的背景透明&background中rgba的背景色透明
近期使用css实现了一个loading旋转加载的图片效果,类似gif动画 过程中,需要透明背景,但是图片不要透明 只要背景透明!只要背景透明!只要背景透明! 这里对透明模糊了,两种写法,模糊了 A: ...
- 【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面
1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC.这一节,我们先来画页面,前端框架采用EasyUI来实现. easyui是一种基于jQuery的用户界面插件集 ...
- 一秒搞定mysql的远程登录
执行下面命令! mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypw' WITH GRANT OPTION ; ...
- cin\cout输入输出控制
输入输出流的控制符 控制符 作 用 dec 设置数值的基数为10 hex 设置数值的基数为16 oct 设置数值的基数为8 setfill(c) 设置填充字符c,c可以是字符常量或字符变量 setpr ...
- Caused by: org.xml.sax.SAXParseException; systemId: file:/home/hadoop/hive-0.12.0/conf/hive-site.xml; lineNumber: 5; columnNumber: 2; The markup in the document following the root element must be well
1:Hive安装的过程(Hive启动的时候报的错误),贴一下错误,和为什么错,以及解决方法: [root@master bin]# ./hive // :: INFO Configuration.de ...
- golang其实也可以优先调度
线上一个服务有个严重问题,处理消息数1k/s提升不上去,经过查看是阻塞在了一个新加的函数上,这个函数负责收集信息,送到一个channel上,再由某个函数处理,这个处理函数很简单,看不出任何问题,最大的 ...
- 搭建LNMP;搭建WIKI
#!/bin/bash#lnmp搭建#搭建WIKI 1.系统检测,系统环境优化 搭建版本: nginx-1.8.1.tar.gzmysql-5.5.32-linux2.6-x86_64.tar.gzl ...
- C语到C++注释转换小项目
可将其分为下面四个状态进行讨论即可: #include<stdio.h> #include<windows.h> #define INPUTFILE "input.c ...
- C/C++知识点清单02-上
第二章 预处理.const.static与sizeof (上) 在这章编写时,发现了一个不错的帖子.其中对程序预处理语句的基本概念写得还是十分清晰的. (http://www.runoob.com/c ...
- promise间隔时间添加dom
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...