js正则表达式

1.字符类

\w 匹配字母数字下划线,相当于0-9A-Za-z_

\s 匹配单个空白字符,包括空格、制表符、回车符、换行符

\b 匹配一个词的边界

2.边界符

如果不加任何边界符,则表示包含。以下只要包含即可

javascript 复制代码
    // /123/ 匹配内容是否包含有123
    var rg = /123/
    console.log(rg.test('123'))
    console.log(rg.test('1234'))
    console.log(rg.test('41234'))

3.字符集合\[\]

字符集合表示有一系列字符可供选择,只要匹配其中一个就可以。

3.1 不带边界符:包含任意一个则返回true

javascript 复制代码
var rg = /[abc]/
rg.test('a')
rg.test('ab')
rg.test('abc')
rg.test('abcd')

3.2 存在起止边界符

加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false

javascript 复制代码
// 存在起止边界符:加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false
var rg1 = /^[abc]$/
rg1.test('a')
rg1.test('ab')
rg1.test('abc')
rg1.test('abcd')

3.3 -表示取某个范围值

javascript 复制代码
var rg2 = /[a-z]/ // -表示取某个范围值

3.4 \^ 表示取反

javascript 复制代码
var rg3 = /[^a-z]/ // ^表示取反

4.量词符

量词符用来设定某个模式出现的次数

|量词符 |说明 |

  • * 重复零次或更多次
    • 重复一次或更多次
  • ? 重复零次或一次
  • {n} 重复n次
  • {n, m}重复n到m次
javascript 复制代码
var rg = /^[a-z]0*$/
var rg1 = /^[a-z]0+$/
var rg2 = /^[a-z]0?$/
var rg3 = /^[a-z]0{2}$/
var rg4 = /^[a-z]0{1,2}$/

5.分组符号 ()

对字符进行分组,小括号包裹的内容可以看作一个整体。1表示第一个分组,2表示第二个,以此类推

javascript 复制代码
var rg = /^abc{1,3}$/; //c匹配1次到3次
var rg1 = /^(abc){1,3}$/; //abc匹配1次到3次

6.正则表达式的参数

思考一个问题:我们需要匹配到某个字符串中所有满足条件的字符,应该如何匹配?可以组合使用,如/a/ig

  • g 全局搜索
  • i 不区分大小写搜索
  • m 多行搜索
  • s 允许.匹配换行符
  • u 使用unicode码的模式进行匹配
  • y 执行"粘性(sticky)"搜索,匹配从目标字符串的当前位置开始

match()匹配到返回的数组:

javascript 复制代码
var rg = /ab/g

'ababab'.match(rg)

7.正则表达式常见的用法

7.1 replace替换

str.replace(regexp|substr, newSubStr|function)

第一个参数可以是正则或者字符串

第二个参数为需要替换的字符串或者一个函数

要求1:将手机号的中间四位替换成*,例如13877283312变成138****3312

分组和replace实现:

javascript 复制代码
  var str = '13877283312'
    console.log(str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'))

要求2:单词首字母转为大写(/\b(\w)/g),例如my name is allen, i like code.

通过/\b(\w)/g匹配首字母

javascript 复制代码
    var str = 'my name is allen, i like code'
    console.log( str.replace(/\b(\w)/g, function (m) {
      console.log(m)
      return m.toUpperCase()
    }))

要求3:大于0并且不超过两位小数

javascript 复制代码
   // 大于0并且不超过两位小数
    let str = 0.445;
    let str1 = 0;
    let str2 = 1;
    let str3 = 1.3;
    let reg = /^([0-9]+)\.{0,1}[0-9]{1,2}$/;
    console.log(reg.test(str));
    console.log(reg.test(str1));
    console.log(reg.test(str2));
    console.log(reg.test(str3));
相关推荐
全栈陈序员11 小时前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
BruceXu6 天前
\b 在中文里会静默失效:三个正则坑和一份能用的字符边界方案
正则表达式
阿昭L7 天前
正则表达式
正则表达式·编译原理
波力海苔夹心脆6758 天前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
FRing039 天前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
小白快快跑哦11 天前
python-字符串全解(六):正则表达式-元字符与转义
python·正则表达式·字符串·元字符·转义
小白快快跑哦13 天前
python-字符串全解(六):正则表达式-逻辑运算或
python·正则表达式·字符串·逻辑运算
MoRanzhi120313 天前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
临床数据科学和人工智能兴趣组14 天前
在R语言的生态系统中,字符串处理一直是一个重要且复杂的任务
开发语言·正则表达式·r语言·r语言-4.2.1
小白快快跑哦15 天前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言