正则表达式详解
来源:互联网 发布:刘彻爱过卫子夫 知乎 编辑:程序博客网 时间:2024/06/07 10:50
正则表达式定义方式:
1、直接量创建:var pattern = /\s*test\s*/gi;
2、构造函数创建:var pattern = new RegExp("\\s*test\\s*", "gi");
区别:通过直接量创建的是固定模式的模式,使用\表示转移序列,而当要动态构造模式时只能使用构造函数创建,使用\\替换所有\字符
正则的字符类:
字符 匹配
[...] 位于括号内的任意字符
[^...] 不在括号内的任意字符
. 除换行符和其它Unicode行终止符之外的任意字符
\w 任意ASCII单字字符,等价于[a-zA-Z0-9_]
\W 任意非ASCII单字字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白字符,\w和\S不同
\d 数字,等价于[0-9]
\D 除了数字外的任何字符
\b 匹配单词边界
\B 匹配非单词边界
{n,m} 匹配次数在n与m之间
{n,} 匹配n次以上
{n} 匹配n次
? 匹配0次或1次
+ 匹配1次或多次
* 匹配0次或多次
\n 和第n个匹配字符匹配,组号是从左到右的左括号数
| 选择
(?=p) 正前向声明,要求接下来的字符与模式p匹配
g 执行一个全局匹配
m 多行模式
非贪婪模式:/a+/匹配一个或多个字符a,当应用在"aaa"时,与三个a都匹配。
但/a+?/只匹配一个第一个字符a。
几个函数:
·search() - "test".search(/\s*test\s*/g),若参数不是正则表达式,则首先传给RegExp()构造函数,转换成正则表达式,search()不支持全局检索,它忽略了参数g。
·split() - 方法参数可以是字符串也可以是正则表达式
·exec() - 与match()类似,不过它的返回数组类型是相同的
·test() - 比exec()简单些,如果字符串匹配,就返回true,否则返回false
注:具有标识g的模式,lastIndex属性存储了在字符串下一次开始检索的位置,由exec()和test()使用。
1、直接量创建:var pattern = /\s*test\s*/gi;
2、构造函数创建:var pattern = new RegExp("\\s*test\\s*", "gi");
区别:通过直接量创建的是固定模式的模式,使用\表示转移序列,而当要动态构造模式时只能使用构造函数创建,使用\\替换所有\字符
正则的字符类:
字符 匹配
[...] 位于括号内的任意字符
[^...] 不在括号内的任意字符
. 除换行符和其它Unicode行终止符之外的任意字符
\w 任意ASCII单字字符,等价于[a-zA-Z0-9_]
\W 任意非ASCII单字字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白字符,\w和\S不同
\d 数字,等价于[0-9]
\D 除了数字外的任何字符
\b 匹配单词边界
\B 匹配非单词边界
{n,m} 匹配次数在n与m之间
{n,} 匹配n次以上
{n} 匹配n次
? 匹配0次或1次
+ 匹配1次或多次
* 匹配0次或多次
\n 和第n个匹配字符匹配,组号是从左到右的左括号数
| 选择
(?=p) 正前向声明,要求接下来的字符与模式p匹配
(?!p) 反前向声明,要求接下来的字符不与模式p匹配
(...) 匹配,并将结果保存到自动命名的结果数组中
(?<result>...) 匹配,并将结果保存到命名为result的结果数组中
(?:...) 匹配,但不保存匹配结果
i 执行不区分大小写g 执行一个全局匹配
m 多行模式
非贪婪模式:/a+/匹配一个或多个字符a,当应用在"aaa"时,与三个a都匹配。
但/a+?/只匹配一个第一个字符a。
几个函数:
·search() - "test".search(/\s*test\s*/g),若参数不是正则表达式,则首先传给RegExp()构造函数,转换成正则表达式,search()不支持全局检索,它忽略了参数g。
·replace() - "test".replace(/\s*test\s*/g, "*"),若第一个参数是字符,则直接检索那个字符。最重要的是replace()第二个参数可以是函数,该函数可以动态的计算替换的字符串。
eg:
var str = '<dl><dt>{title}</dt><dd>{content}</dd></dl>';function render(tpl, data) { str.replace(/{(.*)}/igm, function($, $1) { //其中第一个参数$是目标匹配串 //第二个参数$1是第一个子匹配串,以此类推,后面的参数依次为$i return data[$1] ? data[$1]: $; });}·match() - 唯一一个参数就是正则表达式,返回的是包含匹配结果的数组,a[0]存放的是完整匹配,a[1]存放的是第一个括号匹配子串...无匹配返回null
·split() - 方法参数可以是字符串也可以是正则表达式
·exec() - 与match()类似,不过它的返回数组类型是相同的
·test() - 比exec()简单些,如果字符串匹配,就返回true,否则返回false
注:具有标识g的模式,lastIndex属性存储了在字符串下一次开始检索的位置,由exec()和test()使用。
- Java正则表达式详解
- 正则表达式使用详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- 正则表达式详解
- Java正则表达式详解
- java正则表达式详解!
- Java正则表达式详解
- 正则表达式使用详解
- 正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- 正则表达式使用详解
- Java正则表达式详解
- 正则表达式使用详解
- 正则表达式使用详解
- Java正则表达式详解
- MFC 模态对话框和非模态对话框
- 旋转矩阵
- php预定义sql
- android ramdisk.img的制作过程
- 如何将页脚固定在页面底部
- 正则表达式详解
- Flex中的字符集(比如在ToolTip里要换行显示信息)
- hdu 3635 Dragon Balls
- SWT的MessageBox对话框
- 什么时候使用多线程
- Ascii vs. Binary Files
- 关于消息推送
- 谈谈苦逼这件事
- C_INCLUDE_PATH,LIBRARY_PATH,LD_LIBRARY_PATH(转)