正则表达式
正则表达式是用来匹配字符串的一种规则.
在正则表达式中如果直接给出字符,就是精确匹配;
\d 匹配一个数字
\w 匹配一个字符或数字
. 匹配任意的字符
* 匹配任意个字符
+ 匹配至少一个字符
? 匹配1个或0个字符
{n} 匹配n个字符
{n,m} 匹配n到m个字符
\s 匹配一个空格
^ 表示开头
$ 表示结尾
在正则表达式中如果直接给出字符,就是精确匹配;
\d 匹配一个数字
\w 匹配一个字符或数字
. 匹配任意的字符
* 匹配任意个字符
+ 匹配至少一个字符
? 匹配1个或0个字符
{n} 匹配n个字符
{n,m} 匹配n到m个字符
\s 匹配一个空格
^ 表示开头
$ 表示结尾
要做更精确的匹配,可以用[]表示范围,比如:
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;
JavaScript中使用正则表达式
1.直接以字符串的方式写出来(/正则表达式/)
var re1 = /ABC\-001/;
var re1 = /ABC\-001/;
2.实例一个RegExp对象,需要注意“\”转义字符,单斜杠变双斜杠
var re2 = new RegExp('ABC\\-001');
var re2 = new RegExp('ABC\\-001');
提取字串
正则表达式提供了提取字串的功能
实例:
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
exec()匹配成功后会返回一个Array,第一个元素是匹配成功的整个字符串,后面是匹配成功的字串;若匹配不成功返回null;
全局匹配 g
var r1 = /test/g;
var r2 = new RegExp('test', 'g');
全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引:
var r1 = /test/g;
var r2 = new RegExp('test', 'g');
全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引:
*正则表达式是贪婪匹配,它会匹配尽可能更多的字符
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']
re.exec('102300'); // ['102300', '102300', '']
由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。
必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配:
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

浙公网安备 33010602011771号