美文网首页
javascript正则表示式

javascript正则表示式

作者: 中华小灰灰 | 来源:发表于2021-04-16 00:12 被阅读0次

正则表达式是什么

Regular Expression 按照某种规则查找符合规则的字符串

正则表达式的小工具

https://regexper.com/

正则对象

// 字面量
var reg = /\bis\b/g
// 建正则对象
var reg1 = new RegExp('\bis\b', 'g')

正则表达式修饰符

修饰符 英文 描述
i ignoreCase 大小写不敏感匹配
g global 全局匹配
m multiline 多行匹配

1.元字符

字符类

var reg = /[abc]/
// 字符类取反,即不是a,b, c的字符
var reg = /[^abc]/

范围类

[a-z], [A-Z]

var reg = /[a-z]/

预定义类

字符类 英文描述 描述
\d digital 数字
\D not Digital 非数字
\s space 空格
\S not space 非空格
\w word 单词符(字母, 数字,下划线)
\W not word 非单词符号

2.量词

字符 描述
? {0, 1} 0或1次
+ {1, } 1次以上
* {0, } 0或者任意次数
{n} n次
{n, m} n到m次
{n,} n次以上

贪婪模式,非贪婪模式

默认贪婪模式,尽量匹配更多
量词 + ? ,表示开启非贪婪模式,匹配更少

'123456789'.replace(/\d{3,6}/g, 'A')
'123456789'.replace(/\d{3,6}?/g, 'A')

3.分组

()表示分组,分组后面加量词表示分组内的表达次作用了n次
| 表示或

反向引用

如何把 2021-04-15 替换成为 04/15/2021
()括号内的是分组,替换时可以用$n表示

(?: xx) ?:表示忽略该分组,从后面一个分组开始算$1

var reg = /(\d{4})-(\d{2})-(\d{2})/g;
var str = '2021-04-14'.replace(reg, '$2/$3/$1');
console.log(str)

4.前瞻断言

名称 正则写法 描述
正向前瞻 exp(?=assert) 匹配的是exp,但是后面不assert时有效
负向前瞻 exp(?!assert) 匹配的是exp,但是后面不assert时有效
正向后顾 exp(?<assert) javascript不支持的语法
负向后顾 exp(?<!assert) javascript不支持的语法
var pattern=/api(?!\/v1)/;
// 表示'api'字符串后面不是以’/v1‘结尾时,'api'是有效的匹配
var str='api/v1';            
var str1='api/av1';
console.log(pattern.test(str)) // false  api后面紧跟的是/v1时候验证不通过
console.log(pattern.test(str1)) // true  api后面紧跟的不是/v1时候验证通过

5.正则对象方法test,exct

test

test 返回 Boolean,查找对应的字符串中是否存在模式。

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true

exec

exec 查找并返回当前的匹配结果,并以数组的形式返回。
不带global模式中,数组中总是只有第一个匹配结果

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]); // 1a
alert(reg.exec(str)[0]); // 1a

带global的话,重复执行可得到下一个结果,因为exec会读取lastIndex继续匹配

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]); // 1a
alert(reg.exec(str)[0]); // 1b

所以一般用这个返回值arr[0],获取正则结果即可

6.String对象中正则表达式方法:match,split, replace

match

global模式下返回了符合条件的数组

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
console.log(str.match(reg));
// ["1a", "1b", "1c"]

split

用正则表达式切分字符串

var str = 'a1b22c333d44e';
var arr = str.split(/\d+/g);
console.log(arr)

replace

str.repalce(str, replaceStr)
str.repalce(reg, replaceStr)
str.repalce(reg, function)
使用function回调参数时可替换字符串元素时,可自定义相关逻辑

const result1 = 'a1b2c3'.replace(/\d/g, function(match, index, origin) {
    console.log(match, index, origin)
    // 1 1 a1b2c3
    // 2 3 a1b2c3
    // 3 5 a1b2c3
    return parseInt(match) + 1
})
console.log(result1)
// result a2b3c4

const result2 = 'a1bc2de3f'.replace(/(\w)(\d)(\w)/g, function(match, group1, group2, group3, index, origin) {
    console.log(origin)
    return group1 + group3
})
console.log(result2)
// result abcdef

相关文章

  • javascript正则表示式

    正则表达式是什么 Regular Expression 按照某种规则查找符合规则的字符串 正则表达式的小工具 h...

  • Python 正则表达式

    正则表达式 1. 正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语...

  • 正则表达式逻辑表达

    正则表达式概述:正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular ...

  • 正则表达式(一)

    正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular ...

  • 正则表达式

    正则表达式概念 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular ...

  • 正则表达式

    正则表达式概述 :正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular...

  • day30(正则表达式)

    正则表达式 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Ex...

  • 正则表达式

    正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:RegularE...

  • 第五章(3):正则表达式

    正则表达式 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Ex...

  • 正则表达式

    正则表达式的用途 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular...

网友评论

      本文标题:javascript正则表示式

      本文链接:https://www.haomeiwen.com/subject/dugjlltx.html