JavaScript正则表达式

73 阅读3分钟

正则表达式

是用于匹配字符串中字符组合的模式 , 比如会用正则表达式来 :

  1. 判断用户输入的手机号的格式 , 或者用来判断用户输入的验证码的格式
  2. 过滤掉页面中的一些敏感内容 , 选中对页面中的特定部分 , 便于实现一些操作 : '修改颜色,字体大小'等

如何使用

  1. 定义匹配规则
  2. 匹配内容

示例 :

const str = "hello,theSummerKitten"    //这是被匹配的文本
const reg = /Kitten/                   //这是定义一个匹配规则 /Kitten/ 的意思是检测是否含有Kitten这个字符串
console.log(reg.test(str))             //通过test()方法来匹配 , 打印结果为true
console.log(/abc/.test(str))           //打印结果为false

元字符

一些具有特殊含义的字符 , 可以提高匹配功能

元字符也有分类 , 分为 :

  1. 边界符
  2. 量词
  3. 字符类

1.边界符

边界符说明
^表示匹配行首的文本 (以谁开始)
$表示匹配行尾的文本 (以谁结束)

示例 :

console.log(/a/.test('abcdefg'))    // true , 字符串里包含a
console.log(/^a/.test('abcdefg'))   // true , 字符串以a开头
console.log(/a$/.test('abcdefg'))   // true , 字符串以a结尾
console.log(/^a$/.test('a'))        // true , 精确匹配 a
console.log(/^a$/.test('aa'))       // false, 只匹配字符 a

2.量词

设定某个模式出现的次数

量词说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

示例 :

console.log(/^a*$/.test(''))        // true , 0次
console.log(/^a*$/.test('aaa'))     // true , 匹配多次 ,这两个都要求字符串以 a 开头和结尾
console.log(/^a*$/.test('aab'))     // falseconsole.log(/^a+$/.test(''))        // false
console.log(/^a+$/.test('aaa'))     // true
//  其他也类似 , 这里不提

3.字符类

1. [ ] 匹配字符集合

console.log(/^[abc]$/.test('a'))    // true , 只要包含abc中的一个就可 , 是 '或' (a或b或c)
console.log(/^[abc]$/.test('ab'))   // false, 精确匹配, 开头结尾相同 
console.log(/^[abc]{2}$/.test('ab'))// true , 加入量词// 此外 :
console.log(/^[a-z]$/.test('t'))    // true 匹配a-z范围内的一个字符
console.log(/^[0-9]$/.test('2'))    // true
console.log(/^[a-zA-Z0-9]$/.test('5'))// trueconsole.log(/^[1-9][0-9]{4,}$/.test('12323')) // true 从10000开始往后的数字都可以
// 解析: 必须是以 1-9开头 , 后面的字符范围是0-9 , 而且最少有4次 , 所以最小是 10000// [^] 表示除了该规则内的其他字符
console.log(/[^a-z]/.test('b'))    // false , 表示只匹配除了a-z以外的字符

2.预定义

指的是 某些常见模式的简写方式

预定类说明
\d匹配0-9之间的任一数字,相当于[0-9]
\D匹配0-9以外的字符 , 相当于 0-9 
\w匹配任意字母,数字和下划线
\W除所有字母,数字和下划线
\s匹配空格(包括换行符,制表符,空格符等)
\S匹配非空格的字符

示例 :

//日期格式:
^\d{4}-\d{1,2}-\d{1,2}

4.修饰符

i    对应ignore , 匹配时不区分大小写

g 对应global , 匹配所有满足正则表达式的结果

console.log(/^java$/i.test('JAVA'))    // true

replace() 方法

该方法有两个参数 , 第一个是正则表达式 , 第二个是替换字符集

const str = 'javascript as important as JAVA'
const str2 = str.replace(/java/i, 'python')
console.log(str2)    // pythonscript as important as java    只会替换第一个
const str3 = str.replace(/java/ig, 'python')    // replace() 方法不会改变原字符串
console.log(str3)    // pythonscript as important as python    全局替换g
// 给一个str : "激情!热血澎湃!!" , 替换其中的敏感词 
str = str.replace(/激情/g , '**')
console.log(str)    // **!热血澎湃!!

可以自己尝试给表单元素添加 js 代码来判断表单内容是否合法