提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
正则表达式
一、正则表达式是什么?
1.正则表达式的含义
其实就是模式匹配,也就是说,正则表达式就是那个模式,你的数据要符合这个模式!
正则表达式是一个描述字符模式的对象
2.为什么要用正则表达式
简洁的代码,严谨的应用
3.正则表达式的两种定义风格
1> perl风格
var reg = /表达式/附加参数
2> 构造函数方式
var reg = new RegExp('表达式','附加参数');
4.附加参数
1> i 忽略大小写 (ignore)
2> g 全局匹配 (global)
二、使用步骤
1.字符串中配合正则表达式使用的方法
1> match()
字符串.match(正则表达式)
返回值:匹配到的结果
2> search()
字符串.search(正则表达式);
查找符合正则表达式的匹配值,并返回第一次匹配到的索引值;
注意:search方法对大小写敏感,当你在正则最后写‘i’时,他将忽略大小写问题。否则他严格匹配大小写;
返回值:如果匹配上,则返回第一次出现的索引位置,如果未匹配上,返回-1;
3> replace()
字符串.replace(正则表达, 你要替换成的值(回调函数/字符串));
替换匹配上的内容为你要替换成的值, 返回替换完的结果
回调函数:
字符串.replace(正则表达式,function(str){
return ‘值’;
})
参数str: 是每一次的匹配结果
return结果: 是你要替换成的值
2.正则表达中的一些符号
[] 一个中括号代表一个字符
[abc] 配置a或者b或者c
[a-z] 匹配a到z之间的任何字母 [a-e]:a/b/c/d/e
[A-Z] 匹配大写
[a-zA-Z] 匹配所有的大小写字母
[0-9] 匹配0到9之间的所有数字 [0-5]: 0到5
[a-z_] 匹配a到z或者下划线
[^a-z] 匹配除了a到z之外所有的字符
[\u4e00-\u9fa5] 匹配所有的汉字
3.元字符
代码 | 说明 |
---|---|
/…/ | 代表一个模式的开始和结束 |
^ | 匹配字符串的开始位置 |
$ | 匹配字符串的结束位置 |
\s | 任何空白字符 |
\S | 任何非空白字符 |
\d | 匹配一个数字字符,等价于[0-9] |
\D | 除了数字之外的任何字符,等价于[^0-9] |
\w | 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_] |
\W | 任何非单字字符,等价于[^a-zA-z0-9_] |
. | 除了换行符之外的任意字符 |
\b | 匹配一个单词的边界 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
4.量词
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
5.正则表达式对象的方法
var res = 正则对象.test(数据);
返回值: true / false
其他语法
代码/语法 | 说明 |
---|---|
\a | 报警字符(打印它的效果是电脑嘀一声) |
\b | 通常是单词分界位置,但如果在字符类里使用代表退格 |
\t | 制表符,Tab |
\r | 回车 |
\v | 竖向制表符 |
\f | 换页符 |
\n | 换行符 |
\e | Escape |
\0nn | ASCII代码中八进制代码为nn的字符 |
\xnn | ASCII代码中十六进制代码为nn的字符 |
\unnnn | Unicode代码中十六进制代码为nnnn的字符 |
\cN | ASCII控制字符。比如\cC代表Ctrl+C |
\A | 字符串开头(类似^,但不受处理多行选项的影响) |
\Z | 字符串结尾或行尾(不受处理多行选项的影响) |
\z | 字符串结尾(类似$,但不受处理多行选项的影响) |
\G | 当前搜索的开头 |
\p{name} | Unicode中命名为name的字符类,例如\p{IsGreek} |
(?>exp) | 贪婪子表达式 |
(?-exp) | 平衡组 |
(?im-nsx:exp) | 在子表达式exp中改变处理选项 |
(?im-nsx) | 为表达式后面的部分改变处理选项 |
(?(exp)yes | no) |
(?(exp)yes) | 同上,只是使用空表达式作为no |
(?(name)yes | no) |
(?(name)yes) | 同上,只是使用空表达式作为no |
总结
以上就是正则表达式的介绍,当然其中还有好多没有表达出来比如:平衡组、递归匹配、负向零宽断言等知识没有讲,这几个我还没有理解,到后面可能就会填补上。
好了,就这样吧!