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));
相关推荐
ydd1001002 天前
正则表达式匹配
正则表达式·代理模式
落魄大学生之流水线上谋生计2 天前
正则表达式完全指南:从入门到精通
正则表达式
tianyu2344 天前
Java 正则表达式终极指南:从 Pattern 到 Matcher,从双重转义到性能优化,一篇全搞定
java·开发语言·正则表达式·group·find·pattern·matcher
OPEN-F6 天前
Python进阶教程:正则表达式进阶与文本处理
开发语言·python·正则表达式
小小龙学IT9 天前
C++ 正则表达式完全指南:从 std::regex 实战到 RE2 引擎原理(NFA/DFA/回溯陷阱)
c++·正则表达式
傻啦嘿哟9 天前
猫眼电影TOP100爬虫:Requests+正则表达式实战
爬虫·正则表达式
circuitsosk9 天前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
Livia要学习9 天前
Python正则表达式
正则表达式
wangchen_011 天前
C++正则表达式
开发语言·c++·正则表达式
Patrick在香港12 天前
Python正则表达式实战:解析和验证香港身份证、车牌、电话格式
开发语言·python·正则表达式