关于正则表达式
2018-10-30 本文已影响0人
郑宋君
字符类:[abcd]
//我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个
var s = 'abcs';
console.log(s.match(/[abcd]/g)) // ["a", "b", "c"]
取反
var s = 'abcs';
console.log(s.match(/[^abcd]/g)) // ["s"]
范围类
//匹配一个字符,这个字符可以是0-9中的任意一个
var reg1 = /[0123456789]/
//匹配一个字符,这个字符可以是0-9中的任意一个
var reg2 = /[0-9]/
//匹配一个字符,这个字符可以是a-z中的任意一个
var reg3 = /[a-z]/
//匹配一个字符,这个字符可以是大写字母、小写字母、数字中的任意一个
var reg3 = /[a-zA-Z0-9]/
预定义类
字符 | 等价类 | 含义 |
---|---|---|
. | [^\r\n] | 除了回车符和换行符委外的所有字符 |
\d | [0-9] | 数字字符 |
\D | [^0-9] | 非数字字符 |
\s | [\t\n\x0B\f\r] | 空白符 |
\S | [^\t\n\x0B\f\r] | 非空白符 |
\w | [a-zA-Z_0-9] | 单词字符,字母字符,数字下划线字符 |
\W | [^a-zA-Z_0-9] | 非单词字符 |
边界字符
字符 | 含义 |
---|---|
^ | 以xxx开头 |
$ | 以xxx结尾 |
\b | 单词边界 |
\B | 非单词边界 |
通过以上的类来试一试
var str = 'hello1 world hello2world nice to world hello3'
//全文匹配字符为hello后面跟一个数字的字符
console.log(str.match(/hello\d/g)); // ["hello1", "hello2", "hello3"]
////全文匹配字符为单词边界开头,单词边界结尾的hello后面跟一个数字的字符
console.log(str.match(/\bhello\d\b/g)); //["hello1", "hello3"]
////匹配以字符hello后面跟一个数字结尾的字符
console.log(str.match(/hello\d$/g); // ["hello3"]
简单实现一个效果,使用正则检测字符串里面是否包含header这个单独单词
var str = 'header3 clearfix active header-fixed'
//因为时测试单词,所以不能使用\b,因为-也是单词边界
var reg = /(^|\s)header($|\s)/g;
console.log(str.match(reg)) //false
量词
字符 | 含义 |
---|---|
? | 出现零次或者一次(最多出现一次) |
+ | 出现一次或多次(至少出现一次) |
* | 出现零次或多次(任意次) |
{n} | 出现n次 |
{n,m} | 出现n到m次 |
{n,} | 至少出现n次 |
通过量词,我们可以试一试使用正则判断一串字符串是否是合法的url和手机号
简单判断是否是合法的url
http或者https开头+://
var str = 'https://www.baidu.com/'
console.log(str.match(/^https?:\/\//g))