JS正则表达式

什么是正则表达式?有什么作用?

  • 由字符串组成的搜索序列
  • 在搜索数据时,通过搜索序列描述需要搜索的内容
  • 可以为单字符或复杂模式
  • 可用于文本搜索和替换
  • 可用于表单校验

语法结构

/*
 * pattern: 正则表达式主体(正则表达式模式),用于检索的规则
 * modifieers: 修饰符(可选)
 */
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+/)) // ["s", "s", "s"]
console.log(/s+/.test(str)) //true
console.log(/isa+/.test(str)) //true
console.log(/isab+/.test(str)) //false
console.log(/\d{6}/.test(''65535abd'')) //false

/^1[35789]\d{9}/g.test('13011111111') //true
/^[0-9a-zA-z@#$%^&*]+@[a-zA-Z]{1,}.(\d{3}|[a-zA-z]{2,5})/.test('123@qq.cn')//true
/^[0-9a-zA-z@#$%^&*]+@[0-9a-zA-Z]{1,}.(\d{3}|[a-zA-z]{2,5})/.test('12asdx3@163.cn') //true

方法

方法参数返回值说明
teststrBoolean字符串匹配
execstrString字符串匹配
  • test(str): boolean
    通过test方法与字符串str进行匹配,匹配成功返回true,否则返回false
  • exec(str):String
    通过exec方法与字符串str进行匹配,佩服成功返回str,否则返回null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值