视频加载失败

JS正则基础

661 字
3 分钟
JS正则基础

正则的作用#

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

1.正则的匹配#

  • test返回值=>true,false

2.正则的捕获#

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

正则的组成#

  • 1.元字符,写在//中间的全是元字符

  • 2.修饰符 写在//后面

    • g(全局匹配),i(忽略大小写),m(换行匹配) 注意<一个元字符只能匹配一个字符>
  • 1-1.特殊意义的元字符

    1. \转义字符,一般都是把具有特殊意义的字符变成仅仅是本身意思的字符
var str='I\'m a person';
var reg=/./;
reg.test(str);//true
var reg=/\./;
reg.test("1.1");//true
    1. ^以什么什么开始
var reg=/^1/;
reg.test("123445464");//true
reg.test("0001");//false
    1. $以什么什么结尾
var reg=/m$/;
reg.test("mq");//false
reg.test("qm");//true

应用

var reg=/^6$/;//只匹配"6"
var reg=/^\d$/;//只匹配一个0-9中的任意一位数的字符串
    1. \d匹配0-9中任意一个字符
    1. \D 除了\d以外任意一个字符
    1. \w 匹配0-9,a-z,A-Z,_这63个中的任意一个
    1. \W 匹配除了\w以外的任意一个
    1. \n 匹配一个换行符
var str="abc\nefd";
console.log(str);
    1. \s 匹配一个空白符(空格 制表符 换页符)
    1. \S匹配除了\s以外的任意一个字符
    1. \b匹配一个边界
    1. \B匹配一个非边界
    1. . 除了\n以外的任意一个字符
var reg=/\d\w/;
reg.test("1.2");//false
reg.test("1-2");//false
reg.test("1");//false
reg.test("1w");//true
var reg=/^\s\w\s$/;//字符串length是三
reg.test(" w ");
var reg=/^\s\s\s$/;// " "
var reg=/\baa\B/;
reg.test("a aa a aaa");//true
  • 1-2. 量词元字符(量词元字符一定要写在元字符的后面)
    1. *前面的元字符出现0到多次
    1. +前面的元字符出现1到多次
    1. ?前面的元字符出现0次或者1次
    1. {number} 前面的元字符出现number次
    1. {number,} 前面的元字符出现number到多次
    1. {number,m} 前面的元字符出现number到m次
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中的一个
    1. [xyz] xyz中的一个
    1. [^xyz] 不是xyz中的任意一个
    1. [a-z] a-z中的任意一个

在中括号中除了上面说的具有特殊意义的字符都只是代表本身的意思,但是转义字符\仍然是转义

var reg=/^[\d.]$/;//字符串的length=1
reg.test("q");//false
reg.test("1.");//false
reg.test(".");//true
  • 在没有小括号的情况下,|最后运算
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的正则

var reg=/^2[1-6]$/;
  • 2.18-75的正则
  • 可以将18-75差分为<18-19>,20-69 70-75
var reg=/^(1[8-9]|[2-6]\d|7[0-5])$/;
  • 3.在正则中小括号表示分组
  • 作用:
    • 1)改变优先级 先计算括号里面的
    • 2)表示一个小分组 例如:\number ,表示第number个分组匹配的内容
var reg=/^(\w)(\w{2})\2\1$/;
reg.test("_dcdc_")

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
JS正则基础
https://gaodaxiu-blog.netlify.app/posts/JS正则基础/
作者
GaoDaXiu
发布于
2017-09-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GaoDaXiu
Hello, I'm GaoDaXiu.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
76
分类
20
标签
128
总字数
72,109
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Netlify CI
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录