JavaScript正则表达式
概念: *正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式
*用某种模式去匹配一类字符串的公式
作用: 1. 测试字符串内的模式;
2. 替换文本;
3. 从字符串中提取字符串
语法: 构造函数:var reg = new RegExp(pattern,modifies)
字面量:var reg = /pattern/modifies
注:pattern:正则表达式;modifies:修饰符
方法: 检测一个字符串是否与正则相匹配:reg.test(string)
和reg.exec(string)
举个例子:
// reg.test(string)和reg.exec(string)
var str = 'abc';
var reg = /[a-z]/;
console.log(reg.test(str)); //true
console.log(reg.exec(str)); //["a",index:0,input:"abc"]
//我们可以看出reg.test(str)返回的是一个布尔值,而reg.exec(str)返回的是一个数组
方法(String类中可以支持正则表达式的方法):
方法 | 描述 |
---|---|
search | 检索与正则表达式相匹配的值 |
match | 找到一个或多个正则表达式的匹配 |
replace | 替换与正则表达式匹配的子串 |
split | 把字符串分割为字符串数组 |
举些例子:
//search:检索字符串 --> 返回匹配字符串的下标;否则返回-1
var str = "hello reg";
console.log(str.search(/h/)); //0
console.log(str.search(/w/)); //-1
console.log(str.search(/r/)); //6
console.log(str.search(/REG/i)); //6
//match:检索字符串中的所有数字 --> 未匹配到任何文本,返回null;否则,返回一个数组(依赖于全局标志g)
var str = "1 and 2 and 3";
console.log(str.match(/\d/)); //["1", index: 0, input: "1 and 2 and 3", groups: undefined]
console.log(str.match(/\d/g)); //["1", "2", "3"]
console.log(str.match(/REG/g)); //null
//replace:替换字符串的内容 --> 返回一个新的字符串
var str = "hello huzi"
console.log(str.replace(/huzi/,"wangzi")); //hello wangzi
var str = "hi hujing, hello hujing";
console.log(str.replace(/hujing/g,"wanghai")); //hi wanghai, hello wanghai
//split:把单词分割为字母 --> 返回一个字符串数组
var str = "hello";
console.log(str.split("")); //["h", "e", "l", "l", "o"]
console.log(str.split("",3)); //["h", "e", "l"]
参数:
参数 | 描述 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
gi | 全局匹配且忽略大小写 |
m | 执行多行匹配 |
常用表达式:
表达式 | 描述 |
---|---|
[a-z] | 查找任何从小写a到小写z的字符 |
[A-Z] | 查找任何从大写A到大写Z的字符 |
[0-9] | 查找任何从0到9的数字 |
[abc] | 查找括号内的任意一个字符 |
[^abc] | 查找除了括号内的任意字符 |
常见元字符(特殊字符):
元字符 | 描述 |
---|---|
\w | 匹配数字、字母和下划线 |
\W | 匹配非数字、字母和下划线 |
\s | 匹配空白字符(空格、换行) |
\S | 匹配非空白字符 |
\d | 匹配数字 |
\D | 匹配非数字 |
\n | 匹配换行符 |
. | 匹配除换行符以外任何的单个字符 |
^ | 匹配行首的文本 |
$ | 匹配行尾的文本 |
常见的限定符:
限定符 | 描述 |
---|---|
* | 匹配前面子表达式零次或多次 |
+ | 匹配前面子表达式一次或多次 |
? | 匹配前面子表达式零次或一次 |
{n} | 匹配确定的n次 |
{n,} | 至少匹配n次 |
{n,m} | 最少匹配n次且最多匹配m次 |
举些例子:
// 验证26个英文字母组成的字符串
var str = "asdfdfdsdSDADSAdsaDSADA"; //true
// var reg = /[a-zA-Z]/;
// var reg = /^[a-zA-Z]$/; //false
// var reg = /^[a-zA-Z]+$/; //true
console.log(reg.test(str));
//验证由数字和26个英文字母组成的字符串
var str = "123dsadaSDSA123fdFS";
// var reg = /[0-9a-zA-Z]/; //true
// var reg = /^[0-9a-zA-Z]+$/; //true
// var reg = /^[0-9a-zA-Z]$/; //false
console.log(reg.test(str));
//验证由数字、字母和下划线组成的字符串
var str = "123_sdas_123_asds";
// var reg = /\w/; //true
// var reg = /^\w$/; //false
var reg = /^\w+$/; //true
console.log(reg.test(str)); //true
//验证汉字
var str="王心怡";
var reg = /^[\u4e00-\u9fa5]+$/;
console.log(reg.test(str)); //true
注: 验证汉字:[\u4e00-\u9fa5]
快速记忆:有事100 有就发我
附言:看完这些自己应该会有了一个正确的了解,当然还需要继续练习。一起加油!!!