美文网首页
正则表达式的基础知识

正则表达式的基础知识

作者: SeasonDe | 来源:发表于2017-05-19 14:20 被阅读26次

本文基于工作需要,做的学习笔记
正则表达式在日常的开发使用中,还是比较常见的。 比如在一个表单提交前对某些字段进行验证,又或对某串模版代码进行字符替换、语法验证,我们都会用到。一起巩固下基础知识吧。

前提条件:
你可能需要知道什么是正则表达式,这里直接上规则了。

编码环境:

regularEx.jpg

1、基础知识

表达式 描述
[……] 匹配括号中的任何一个字符
[ˆ……] 匹配不在括号中的任何一个字符(^为取反符)
\w 匹配任何一个字符(az、AZ和0~9)
\W 匹配任何一个空白字符
\s 匹配任何一个非空白字符
\S 与任何非单词字符匹配
\d 匹配任何一个数字(0~9)
\D 匹配任何一个非数字(^0~9)
[\b] 匹配一个退格键字母
{n,m} 最少匹配前面表达式n次,最大为m次(n-m次数范围)
{n,} 最少匹配前面表达式n次(上限不定)
{n} 恰恰匹配前面表达式为n次
? 匹配前面表达式0或1次,即{0,1}
+ 至少匹配前面表达式1次,即{1,}
* 至少匹配前面表达式0次,即{0,}
竖线 匹配配前面表达式或后面表达式(逻辑或)
(…) 在单元中组合项目
^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配字符边界
\B 匹配非字符边界的某个位置

注:正则表达式在线判断工具网址:http://tool.oschina.net/regex/#

比如说
/^-?[0-9]*$/  与  /^-?\d*$/  等价,可以匹配 - 。
/^-?[1-9]\d*$/  这个与上面不同,不可以匹配 - ,只能匹配 -3 等。
比如说
/\{%([^%>]+)?%\}/   用来匹配{%...%}

2、方法函数

我们一般定义一个正则内容,通常就是直接字面量方式:

var  reg = /^-?[1-9]\d*$/;

先看看修饰符

符通常有三种:i(表示忽略大小写), g(表示全局) , m(表示多行,遇到换行后不停止匹配,继续直到字符串结束。)

test方法

用来测试某个字符串是否与正则匹配,匹配返回true,否则返回false。

比如说
var reg=/boy(s)?\s+and\s+girl(s)?/gi;
console.log(reg.test('boy    and   girl'));  //输出是true

exec方法

接受一个字符串,返回一个数组,数组中第0个元素是匹配的子字符串,第1个元素是子分组1的匹配结果,第2个元素是子分组2的匹配结果,以此类推。有点不明白。如果没有正则子分组,那么该数组长度就是1,就是匹配到的那个子字符串。
跟随这个数组返回的还有一个对象,它拥有2个属性,分别是index和input。前者表示当前匹配到的子字符串所处的位置,后者则表示被匹配的原是字符串。

比如说
var text = "cat, bat, sat, fat";

var pattern1 = /.at/;
var matches = pattern1.exec(text);
console.log(matches.index);       //输出0
console.log(matches[0]);          //输出cat
console.log(pattern1.lastIndex);  //输出0

matches = pattern1.exec(text);
console.log(matches.index);       //输出0
console.log(matches[0]);          //输出cat
console.log(pattern1.lastIndex);  //输出0

var pattern2 = /.at/g;
var matches = pattern2.exec(text);
console.log(matches.index);       //输出0
console.log(matches[0]);          //输出cat
console.log(pattern1.lastIndex);  //输出0

matches = pattern2.exec(text);
console.log(matches.index);       //输出5
console.log(matches[0]);          //输出bat
console.log(pattern1.lastIndex);  //输出8

compile方法

用来对正则表达式进行编译,编译后的正则表达式在使用时候效率更高,适用于一个正则多次调用的情况。对于只使用一两次的,该方法没有特别显著的效应。(少用)

比如说
var reg=/[abc]/gi;
reg.compile(reg);

3、String中的正则

比如有search、replace、split、match。
分别看下例子:

先看search
var str="hello world";
console.log(str.search(/o/g));   //输出是4
console.log(str.search(/o/));    //输出是4(结论是带不带g,没有区别)

再看replace
var str="hello world, hello test";
console.log(str.replace(/hello/g,'hi'));  //输出是hi world, hi test
console.log(str.replace(/hello/,'hi'));   //输出是hi world, hello test

再看split
var str="how|old*are    you";
var arr=str.split(/\||\*|\s+/);
console.log(arr);  //输出是Array[4]   0:"how" 1:"old" 2:"are" 3:"you"

最后看match
var str="ws1estqsa";
console.dir(str.match(/(\w)s(\w)/g));  //输出是Array[3]   0:"ws1" 1:"est" 2:"qsa"
console.dir(str.match(/(\w)s(\w)/));   //输出是Array[3]   0:"ws1" 1:"w" 2:"1" index:0 input:"ws1estqsa"

相关文章

  • 常用正则表达式及基础知识

    正则表达式 基础知识 正则表达式具有特殊含义的标点符号^ $ . * + ? = ! : | \ / ( ) [ ...

  • 004-golang 正则表达式的使用

    获取包名 参考链接 golang 正则表达式 基础知识 - Golang 中的正则表达式 线上正则表达式测试工具

  • Python网页爬虫,get一种表白方式!

    常用库 Requests BeautifulSoup Re 正则表达式 基础知识 HTTP协议 Hypertext...

  • Python-re模块(正则表达式)

    01. 正则表达式基础知识 1.1 原子 原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子,...

  • 学习Vue中那些正则表达式

    想看懂Vue的template解析部分,会发现其中有大量的正则表达式。所以先学习基础知识。 其实正则表达式并不难,...

  • 2018-07-09正则表达式

    跳转到底部 由于新接的项目中要用到大量的正则表达式,所以对正则表达式进行了简单的复习 基础知识回顾:正则表达式是什...

  • Python正则表达式初识(五)

    正则表达式的内容很丰富,今天小编继续给大家分享Python正则表达式的基础知识。今天要给大家的讲的特殊字符是竖线“...

  • 爬虫笔记(3):正则表达式与Cookie

    正则表达式基础知识: 原子:正则表达式中最基本的组成单位: 普通字符作为原子; 非打印字符:换行符\n,制表符\t...

  • 正则表达式基础教程

    1 正则表达式 1.1 正则表达式基础知识 先从简单的开始。假设你要搜索一个包含字符cat的字符串,搜索用的正则表...

  • Javascript技术栈梳理

    javascript语言: 基础知识 对象 原型, 原型链继承 闭包, 作用域 数组 函数 类和模块 正则表达式 ...

网友评论

      本文标题:正则表达式的基础知识

      本文链接:https://www.haomeiwen.com/subject/ozaexxtx.html