javaScript - 正则表达式

正则表达式(regular expression)用于匹配特定规则的字符,比如验证一个邮箱的地址是否正确,电话号码是否合法等等,具有很好的灵活性复用性。它不是JavaScript独有的东西,准确的说它是一个标准。大部分的开发语言都有自己正则的定义方式,但是规则基本是一致的。这里我们主要介绍JavaScript中的正则表达式

16.01 - 概述

两种定义正则的方式

  • 字面量

var reg = /hello/;
var str= 'hello world!';
reg.test(str); // true
  • RegExp构造函数

构造函数定义的正则,正则体为传递的参数字符串。所以可以用变量代替某一部分的内容


var reg = new RegExp('hello');
var str= 'hello world!';
reg.test(str); // true

基本匹配规则

正则表达式中的大部分字符都被认为是普通的字符(字面量字符),所以最基本的方式需要匹配的字符写入正则表示式中。

但是实际上正则的使用都是许多比较复杂的规则,大多数需要匹配的,不是某个准确的字符,可能是一个范围内的字符,或者特定的字符结构,特定数量、顺序等等,这些特点都能成为匹配的条件

  • 普通字符(字面量字符)


var str = 'hello world';
var reg = /world/;// 匹配 world
str.replace(reg,'JavaScript'); // hello JavaScript
  • 特殊字符(元字符):特殊字符在正则表达式中有特定的含义或者作用,不能视作普通字符。如果需要匹配的是字符是特殊字符,需要进行转义

    • .  点字符:匹配除开回车,换行,分割符之外的所有字符

    
    var str = 'abc';
    var reg = /a.b/;// 匹配 a任意字符b
    str = str.replace(reg,'-'); // a-c
    str = str.replace(reg,'+'); // a+c
    • ^ $ 位置字符:表示开始和结束的特殊字符

    
    var str = 'hello world!';
    var reg = /world$/;// 匹配 world结束
    str.replace(reg,'JavaScript'); // hello world!   world之后是感叹号并没有结束,无法匹配
    • | 竖线符号:表示或者或者的关系

    
    var str = 'hello';
    var reg = /hello|world/;// 匹配hello 或者 world
    str = str.replace(reg,'world'); // world
    str = str.replace(reg,'hello'); // hello
    • *  +  ? 量词符号:量词符号

    • () {} [] 括号:划分特殊区域

    • \ 反斜线:转义符号,转义符号之后的字符将会被转义,有特殊意义的符号将会失去意义,同时也可以让某些普通字符赋予特殊意义

      • 匹配特殊符号

      
      var str = '1.1';
      var reg = /1\.1/;// 匹配 1.1
      • 预定义字符

        预定义字符,表示预设的一些常用的字符集合,通过转义对应的字符来表示。

        同时大小写代表不同的含义,小写代表该类型,大写为非该类型,例如:\d为匹配所有单个的数字,\D为匹配所有的单个非数字

        • \d \D 单个的所有数字

        • \s \S  空格

        • \w \W  所有字符( 字母 数字 _ )

        • \b \B  独立部分 (空格 ^ $  - )

      • 特殊字符

        • \n 匹配换行键。

        • \r 匹配回车键。

        • \t 匹配制表符 tab

16.02 - 字符集

字符集用于表示字符的集合正则中用中括号[]表示,匹配的过程中只需要匹配其中的一个字符就符合匹配条件,并且可以表示一个区间内的所有字符

普通字符集


var reg = /a[1m帅]b/;// 匹配 a 1或m或帅 b
'a帅b'.replace(reg,'amo')// amo
    .replace(reg,'帅');// amo

范围字符集

范围字符集与普通字符集一样表示集合中的某个字符,但是可以用于表示一个区间内的连续字符,比如数字:0-9,字母:a-z

  • 中文区间:


var reg = /[a-c1-3]/;// 匹配 a到z  1到5 之间的任意字符 等同 /a|b|c|1|2|3/ 或 /[abc123]/
reg.test('c');// true
reg.test('2');// true

子项集

量词

标识符

方法

猜你喜欢

转载自blog.csdn.net/chang_jie_518/article/details/80408082