正则表达式 -基础部分

正则表达式

菜鸟教程链接
菜鸟工具-正则表达式在线测试
菜鸟工具-前端工具

为什么要使用正则表达式?

  • 测试字符串内的模式(数据验证)
  • 替换文本
  • 基于模式匹配从字符串中提取子字符串

语法概念了解

  • 普通字符 - 包括显示指定为元字符的所有可打印和不可打印字符。如所有的大小写字母、所有数字、所有标点符号和其他符号等。
  • 非打印字符 - 也是正则表达式的组成部分。 如:以下字符;
    非打印字符描述
    \f匹配换页符
    \n匹配换行符
    \r匹配回车符
    \t匹配制表符
    \v匹配垂直制表符
    \s匹配任何空白符,包括空格、制表符、换页符等
    \S匹配任何非空白符,等价于[^\f\n\r\t\v]
  • 特殊字符 - 一些有特殊含义的字符,通常要匹配这些特殊字符本身,需要在前面加斜杠(\)转义。
    特殊字符描述(如要匹配特殊字符本身,需要在前面加斜杠\转义)
    ^匹配字符串的开始位置,在方括号中使用时例外,表示不接受该字符集合,如要匹配^字符本身,请使用^
    $匹配字符串的结尾位置,如要匹配$字符本身,请使用$
    ()标记一个表达式的开始和结束位置
    *匹配前面的子表达式零次或多次,等价于限定符{0,}
    +匹配前面的子表达式一次或多次,等价于限定符{1,}
    ?匹配前面的子表达式零次或一次,等价于限定符{0,1}
    .匹配除换行符\n之外的任何单子符
    [标记一个中括号表达式的开始
    {标记限定符表达式的开始
    |指明两项之间的一个选择
    \将下一个字符标记为或特殊字符、或原义子符、或向后引用、或八进制转义符。
  • 限定符 - 用来指定正则表达式的一个给定组件必须要出现多少次才满足匹配。
    限定符描述
    *匹配前面的子表达式零次或多次,等价于限定符{0,}
    +匹配前面的子表达式一次或多次,等价于限定符{1,}
    ?匹配前面的子表达式零次或一次,等价于限定符{0,1}
    {n}n是一个正整数,匹配确定的n次,如匹配"foot"中的两个o
    {n,}n是一个正整数,至少匹配n次
    {n,m}n和m都是正整数,且n必须小于等于m,注意逗号和两个数之间不能有空格
    注意1:如果限定符出现在范围表达式之后,则应用于整个范围表达式。
    注意2:* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
  • 定位符 - 描述字符串或单词的边界,可以将正则表达式固定到行首或行尾。
    定位符描述
    ^匹配字符串开始的位置,如果设置了RegExp对象的Multiline属性,还会与\n或\r之后的位置匹配
    $匹配字符串结尾的位置,如果设置了RegExp对象的Multiline属性,还会与\n或\r之后的位置匹配
    \b匹配一个单词边界,即字与空格间的位置
    \B匹配非单词边界
    注意:定位符与限定符不能一起使用,由于紧靠换行或者单词边界的前面或后面不能有一个以上的位置,因此不允许出现 ^* 之类的表达式
  • 字符集 - 由方括号组成,作用匹配某些特定字符
    字符集描述(例子中x表示要匹配的任意字符)
    [x]字符集合,匹配包含的任意一个字符。
    [^x]负值字符集合,匹配未包含的任意字符
    [a-z]字符范围,匹配指定范围的字符。如"[a-z]"可以匹配任意小写字母
    [^a-z]负值字符范围,匹配任何不在指定范围的任意字符
  • 分组 - 由圆括号组成,把匹配到的字符串分成若干个小组,所有获取的匹配可以从产生的Matches集合中得到。js中使用$0至$9属性获取
    分组描述(例子中x表示要匹配的任意字符)
    (x)匹配x并获取这一匹配
    (?:x)匹配x但不获取匹配结果。如:"industr(?:y|ies)"就是一个比"industry|industries"更简略的表达式
    (?=x)正向肯定预查,非获取匹配。如:“Windows(?=95|98|NT|2000)“能匹配"Windows2000"中的"Windows”,但不能匹配"Windows3.1"中的"Windows”
    (?!x)正向否定预查,非获取匹配。如:“Windows(?!95|98|NT|2000)“能匹配"Windows3.1"中的"Windows”,但不能匹配"Windows2000"中的"Windows”
    (?<=x)反向肯定预查,与正向肯定预查类似,只是方向相反。如:"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。
    (?<!x)反向否定预查,与正向否定预查类似,只是方向相反。 例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"

运算符的优先级

  • 正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。
  • 规则如下:
    • 相同优先级的从左到右进行运算
    • 不同优先级的运算先高后低
  • 以下列表从最高到最低说明了各种正则表达式运算符的优先级顺序
    运算符描述
    \转义符
    (),(?: ),(?=),[]圆括号和方括号
    *,+,?,{n},{n,},{n,m}限定符
    ^,$,\任何元字符、任何字符定位点和序列(即:位置和顺序)
    |替换符,“或"操作符,字符具有高于替换运算符的优先级。如:“m|food"匹配"m"或"food”。若要匹配"mood"或"food”,请使用括号创建子表达式,从而产生"(m|f)ood"。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值