什么是正则表达式?有什么作用?
- 由字符串组成的搜索序列
- 在搜索数据时,通过搜索序列描述需要搜索的内容
- 可以为单字符或复杂模式
- 可用于文本搜索和替换
- 可用于表单校验
- …
语法结构
var pattern = /pattern/modifieers
正则表达式用于str检索和替换
提示: search方法及replace方法为JS内置的String方法,而不是正则表达式方法。只是这些方法支持使用正则表达式查询和替换
var str = 'hello world'
var sech = str.search(/world/i)
console.log(sech)
var str = 'hello world'
var rep = str.replace(/o/g, 'I')
modifieers 修饰符值说明
修饰符 | 描述 |
---|
i | 不区分大小写 |
g | 全局匹配(查询所有的) |
m | 多行匹配 |
pattern 正则表达式模式值说明
表达式 | 描述 |
---|
[abc] | 查找方括号内出现的字符(查找方括号之间的任何字符。包含关系) |
[^abc] | 查找不在方括号内的字符 |
[a-z] | 查找任何从a至z的字符(包含关系) |
[0-9] | 查找任何从0至9的数字(包含关系) |
(x|y) | 查找任何以|分隔的选项(或关系,全部获取) |
//[abc]
var str = 'redAndGreenAndBlock'
//match(regexp):检索字符串内指定的值,返回匹配成功的结果数组
var arr = str.match(/[aeiou]/gi)
console.log(arr) //["e", "A", "e", "e", "A", "o"]
// [a-z]
console.log(str.match(/[f-z]/g)) //["r", "n", "r", "n", "n", "l", "o", "k"]
//[0-9]
var str1 = '65535'
console.log(str1.match(/[4-7]/g)) //["6", "5", "5", "5"]
console.log(str1.match(/[4-7]/)) //["6"]
//(x|y) : 该模式可以省略(),建议不省略
var str2 = 'this is arrs color: red, block, green, blue, green'
console.log(str2.match(/(is|block)/)) // [is, is]
console.log(str2.match(/is|block/g)) // [is, is, block]
console.log(str2.match(/(is|block|red|green)/g))//["is", "is", "red", "block", "green", "green"]
console.log(str2.match(/([a-z]|[0-9])/g))// 全部
元字符 | 描述 |
---|
\w | 数字、字母、下划线 |
\W | 非单词字符 == [^\w] |
\d | 查找数字 |
\D | 查找非数字 == [^\d] |
\s | 查找空白字符 |
\S | 查找非空白字符 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
\0 | 查找null字符 |
\n | 查找换行符 |
\f | 查找换页符 |
\r | 查找回车符 |
\t | 查找制表符 |
\v | 查找垂直制表符 |
\xxx | 查找八进制数xxx规定的字符 |
\xdd | 查找十六进制数dd规定的字符 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符 |
量词 | 描述 |
---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,} | X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。 |
n{X,Y} | X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
var str = 'thisisastring'
console.log(str.match(/s+/))
console.log(/s+/.test(str))
console.log(/isa+/.test(str))
console.log(/isab+/.test(str))
console.log(/\d{6}/.test(''65535abd''))
/^1[35789]\d{9}/g.test('13011111111')
/^[0-9a-zA-z@#$%^&*]+@[a-zA-Z]{1,}.(\d{3}|[a-zA-z]{2,5})/.test('123@qq.cn')
/^[0-9a-zA-z@#$%^&*]+@[0-9a-zA-Z]{1,}.(\d{3}|[a-zA-z]{2,5})/.test('12asdx3@163.cn')
方法
方法 | 参数 | 返回值 | 说明 |
---|
test | str | Boolean | 字符串匹配 |
exec | str | String | 字符串匹配 |
- test(str): boolean
通过test方法与字符串str进行匹配,匹配成功返回true,否则返回false - exec(str):String
通过exec方法与字符串str进行匹配,佩服成功返回str,否则返回null