正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。
使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示:
var re = /ab+c/;
脚本加载后,正则表达式字面量就会被编译。当正则表达式保持不变时,使用此方法可获得更好的性能。
或者调用RegExp对象的构造函数,如下所示
var re = new RegExp("ab+c");
在脚本运行过程中,用构造函数创建的正则表达式会被编译。如果正则表达式将会改变,或者它将会从用户输入等来源中动态地产生,就需要使用构造函数来创建正则表达式。
匹配模式
i 执行对大小不敏感的匹配
g 全局搜索
m 执行多行搜索,但会改变^和$的行为
s 支持单行字符串,.可以匹配换行符
RegExp对象的方法
exec 检索字符中是正则表达式的匹配,返回找到的值
test 检索字符串中指定的值,返回true或false
lastIndex 一个整数,标示开始下一次匹配的字符位置。
该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置
exec() 方法用于检索字符串中的正则表达式的匹配。
RegExpObject.exec(string)
返回值
返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
Example:
// 获取所有匹配项,并忽略大小写
const testString = 'test Test tEsT abdskxc ioewhsnc'
const reg = /test/gi
console.log(testString.match(reg)) // [ 'test', 'Test', 'tEsT' ]
Example:
// 使用操作符 |
const reg = /yes|no|maybe/
// 匹配任意字符 使用 . 作为任何字符的占位符
const regexp = /.at/gi
const testString = 'cat Bat mat DOG egg FAT cupcake sing'
console.log(testString.match(regexp)) // [ 'cat', 'Bat', 'mat', 'FAT' ]
// 使用字符类 用来定义匹配的一组字符 []
const testReg = /[cmf]at/g
console.log(testString.match(testReg)) // [ 'cat', 'mat' ]
// 匹配字母表中的字母
const regTest = /[a-d]at/
const str1 = 'cat', str2 = 'fat', str3 = 'bat'
console.log(regTest.test(str1), regTest.test(str2), regTest.test(str3)) // true false true
// 匹配特定的数字和字母
const reg1 = /[a-z0-9]/gi
const testString1 = 'sagiga46323'
console.log(reg1.test(testString1)) // true
// 匹配单个未知字符
const reg2 = /[^aeiou]/gi
// 匹配所有字母和数字
const longReg = /[A-Za-z0-9_]+/
const shortReg = /\w+/
const num = '46313'
const str4 = 'dsiohdkcsds'
console.log(longReg.test(num), shortReg.test(num), longReg.test(str4), shortReg.test(str4)) // true true true true
// 除了字母和数字,其他的都要匹配
const reg3 = /\w/gi
const str5 = '!_$!!'
const str6 = 'sj456AyTB'
console.log(reg3.test(str5)) // true
console.log(reg3.test(str6)) // true
// 匹配所有数字
const digitReg = /\d/g
const strDigit = 'The shirt is $35.12'
console.log(strDigit.match(digitReg)) // [ '3', '5', '1', '2' ]
// 匹配所有非数字
const nonDigitReg = /\D/g
const nonStr = '463 dshkfsd'
console.log(nonStr.match(nonDigitReg)) // [' ', 'd', 's', 'h', 'k', 'f', 's', 'd']
// 匹配空格
const senReg = /\s/g
const sentence = 'I like mike'
console.log(sentence.match(senReg)) // [ ' ', ' ' ]
// 匹配非空格
const nonsenReg = /\S/g
console.log(sentence.match(nonsenReg)) // ['I', 'l', 'i', 'k', 'e', 'm', 'i', 'k', 'e']
本文详细介绍了JavaScript中正则表达式的使用,包括正则表达式字面量和构造函数的创建,匹配模式、大小写不敏感搜索、全局和多行搜索,以及RegExp对象的方法如exec和test。通过实例演示了如何在实际项目中应用这些技术来处理字符串匹配和替换。
1009

被折叠的 条评论
为什么被折叠?



