标签:
1什么是正则表达式,创建正则的两种方法
正则表达式是一个描述字符模式的一个对象,正则表达式用RegExp对象表示。
正则表单式创建方式有两种:1、直接量 2、使用RegExp来创建正则对象。 用
var person=/\w/g;
var person1=new RegExp("\\w")
一般如果正则表达式是变量的,通常使用第二种方式,第一个参数是正则表达式,第二个是模式匹配符包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
var str=‘mm‘+1;
var reg=new RegExp(str,‘g‘);
reg.test(‘mm1‘);
2.正则表达式的元字符和量词
元字符 | 描述 |
. | 除了换行符和其他unicode之外的所有字符 |
\w | 等价于[a-zA-Z0-9] |
\W | 等价于[^a-zA-z0-9] |
[....] | 在方括号内的任意字符 |
[^...] | 不在方括号内的任意字符 |
\s | 任何空白字符 |
\S | 任何非unicode字符外的字符 |
\d | 等价于[0-9] |
\D | 等价于[^0-9] |
? | 匹配前面的0次或者1次,等价于{0,1} |
+ | 匹配前面的一次或者多次,等价于{1,} |
* | 匹配前面的多次或者0次,等价于{0,} |
{n,m} | 匹配前面的n次到m次 |
{n} | 匹配n次 |
{n,} | 匹配前面的n次或者更多次 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
\b | 匹配字符串的边界 |
\B | 匹配非边界 |
? | 在量词后面加一个?表示非贪婪匹配,尽可能少的匹配 |
在正则中还有许多标点符号有特殊的意义,他们是:
^ $ . * + ? = ! : | \ / () [] {}
如果想在正则表达式中使用他们的直接量,那么要用\斜杠进行转义,例如 var reg=/\\/g 这个匹配的是一个‘\‘;
2.2 选择和分组引用和正向匹配
字符 |
含义 |
| |
匹配该字符串左侧子表达式或者右侧子表达式 |
() |
将几个项组合成一个单元,这个单元可以用*+?修饰,并且记住这个单元,以供后面引用 |
(?:....) |
只组合但是不记忆这个分组 |
\n |
和第n个分组第一次匹配的字符相匹配,分组是圆括号中的子表达式,从左到右的第几个表达式。 |
(?=p) |
要求接下来的字符都于p匹配 |
(?!p) |
要求接下来的字符都不能于p匹配。 |
3 正则的方法
3.1 exec()
3.2 test()
4 用以匹配正则的字符串的方法
4.1 search()
serach的参数是一个正则的表达式,返回第一个与之匹配的子串的位置,如果找不到返回-1,如果给的参数不是正则,那么会使用RegExp()初始化成一个正则表达式.
alert("javascript".search(/script/g));//返回4 alert("javascript".search(/css/g));//返回-1
4.2 replace()
replace的第一个参数是正则表达式,或者普通的字符,第二个是要替换成的字符,或者fuction,或者$n 如果不加g,查找到第一个匹配的字符替换后就不进行替换了,否则将替换所有匹配的字符。
"javascript,css,html".replace(/javascript/g,"java");//java,css,html
"css,c#,c++,html".replace(/(css),c#/,"$1"); //css,c++,html
下面replace的第二个参数是一个方法,这个方法有三个参数,第一个是要替换的字符串,第二个是要替换的字符串的索引值,第三个是原有的字符串,这个方法必须有return返回值,用返回值来替换要替换的字符串,replace方法不会改变原有字符串;
View Code
4.3 match()
match()里面是一个正则表达式,如果加上g,则全局查找,返回的是匹配到的数组,如果不加g,找到第一个就不继续查找,返回的是一个数组,数组的第一个元素是匹配到的整体字符串,第二个元素是子元素。
var str=‘eng1eem2mfefn3‘;
str.match(/\w(\d)/)
["g1", "1"]
var str=‘eng1eem2mfefn3‘;
str.match(/\w(\d)/g)
["g1", "m2", "n3"]
4.4 split()
split参数可以是正则,用以将字符串分割成一个数组。
标签:
原文地址:http://www.cnblogs.com/module/p/5355520.html