正则基础

正则的作用

  • 正则是来处理复杂字符串的

    1.正则的匹配

  • test返回值=>true,false

2.正则的捕获

  • 把匹配内容找出来,exec方法
1
var reg=/9/g;

正则的组成

  • 1.元字符,写在//中间的全是元字符
  • 2.修饰符 写在//后面
    • g(全局匹配),i(忽略大小写),m(换行匹配)
      注意:一个元字符只能匹配一个字符
  • 1-1.特殊意义的元字符

    • 1). \ 转义字符,一般都是把具有特殊意义的字符变成仅仅是本身意思的字符

      1
      2
      3
      4
      5
      var str='I\'m a person';
      var reg=/./;
      reg.test(str);//true
      var reg=/\./;
      reg.test("1.1");//true
    • 2). ^ 以什么什么开始

      1
      2
      3
      var reg=/^1/;
      reg.test("123445464");//true
      reg.test("0001");//false
    • 3). $ 以什么什么结尾

      1
      2
      3
      var reg=/m$/;
      reg.test("mq");//false
      reg.test("qm");//true
  • 应用

    1
    2
    var reg=/^6$/;//只匹配"6"
    var reg=/^\d$/;//只匹配一个0-9中的任意一位数的字符串
    • 4). \d 匹配0-9中任意一个字符

      • 5). \D 除了\d以外任意一个字符

      • 6). \w 匹配0-9,a-z,A-Z,_这63个中的任意一个

      • 7). \W 匹配除了\w以外的任意一个

      • 8). \n 匹配一个换行符

1
2
var str="abc\nefd";
console.log(str);
  • 9). \s 匹配一个空白符(空格 制表符 换页符)

    • 10). \S 匹配除了\s以外的任意一个字符

    • 11). \b 匹配一个边界

    • 12). \B 匹配一个非边界

    • 13). . 除了\n以外的任意一个字符

1
2
3
4
5
var reg=/\d\w/;
reg.test("1.2");//false
reg.test("1-2");//false
reg.test("1");//false
reg.test("1w");//true
1
2
3
var reg=/^\s\w\s$/;//字符串length是三
reg.test(" w ");
var reg=/^\s\s\s$/;// " "
1
2
var reg=/\baa\B/;
reg.test("a aa a aaa");//true
  • 1-2. 量词元字符(量词元字符一定要写在元字符的后面)
  • 1) * 前面的元字符出现0到多次
  • 2) + 前面的元字符出现1到多次
  • 3) ? 前面的元字符出现0次或者1次
  • 4) {number} 前面的元字符出现number次
  • 5) {number,} 前面的元字符出现number到多次
  • 6) {number,m} 前面的元字符出现number到m次

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var reg=/\d*/;
    reg.test("");//true
    reg.test("1");//true
    reg.test("111");//true
    reg.test("wwww...");//true
    var reg=/^\w{4}1+$/;//length>=5
    reg.test("111111");//true
    reg.test("abcd2");//false
    reg.test("121221");//false
    var reg=/^1\d{10}$/;
  • 1-3.中括号[]

  • 1). x|y x或y中的一个
  • 2). [xyz] xyz中的一个
  • 3). [^xyz] 不是xyz中的任意一个
  • 4). [a-z] a-z中的任意一个
  • 在中括号中除了上面说的具有特殊意义的字符都只是代表本身的意思,但是转义字符\仍然是转义

    1
    2
    3
    4
    var reg=/^[\d.]$/;//字符串的length=1
    reg.test("q");//false
    reg.test("1.");//false
    reg.test(".");//true
  • 在没有小括号的情况下,|最后运算

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var reg=/^10|20$/;//以10开头 或者 以20结尾
    reg.test("1000D");//true
    reg.test("00020");//true
    reg.test("10201020");//true
    var reg=/^(10|20)$/;//"10" "20" 以10开头结尾 或者 以20开头结尾
    var reg=/^[1020]$/;//"1" "0" "2"
    var reg=/^[10-20]$/;//"1" "0-2" "0"
    var reg=/^[16-20]$/;//不对的
  • 举例

  • 1.21-26的正则

    1
    var reg=/^2[1-6]$/;
  • 2.18-75的正则

  • 可以将18-75差分为:18-19,20-69 70-75

    1
    var reg=/^(1[8-9]|[2-6]\d|7[0-5])$/;
  • 3.在正则中小括号表示分组

  • 作用:
    • 1)改变优先级 先计算括号里面的
    • 2)表示一个小分组 例如:\number ,表示第number个分组匹配的内容
      1
      2
      var reg=/^(\w)(\w{2})\2\1$/;
      reg.test("_dcdc_")
您的支持将鼓励我继续创作!