正则

作者: 指尖轻敲 | 来源:发表于2018-11-20 21:21 被阅读6次

创建正则表达式

  1. 构造函数创建
var parrent1 = new RegExp("box");
var parrent2 = new RegExp("box", "gi");

第一个参数是匹配文本的规则;第二个参数(可选)是模式修饰符。i表示忽略大小写,g表示全局匹配。ES6新增的暂时不说

  1. 字面量创建
var parrent3 = /box/;
var parrent4 = /box/gi;

语法:/模式/模式修饰符

RegExp实例方法

var str = "this is a Box box box";
var parrent = new RegExp("box", "gi");
1、test()

这个方法用来查找字符串中是否存在正则表达式所写的模式规则。有就返回true,没有就返回false。

console.log(parrent.test(str)); //true

这个方法只要匹配到符合规则的就会返回true,不会继续往下找了,所以这个方法使用全局匹配是没用的。

2、exec()

这个方法也是匹配符合规则的字符,如果没有匹配到就返回null,如果匹配到了返回的是一个数组,这个数组第一个元素是在字符串中匹配到的字符,第二个元素是匹配到的字符的起始索引。

var reg = /xiao/i;
var str = "wo shi yi zhi xiao xiao niao"
console.log(reg.exec(str)); 
//["xiao", index: 14, input: "wo shi yi zhi xiao xiao niao", groups: undefined]
var reg2 = /da/i
console.log(reg2.exec(str)); //null
3、compile()

该方法用于修改正则表达式,也可以修改模式修饰符。也就是把正则表达式匹配的字符和模式替换掉。

var reg = /xiao/ig;
var str = "wo shi yi zhi Xiao xiao niao";
console.log(reg.exec(str)); //["Xiao", index: 14, input: "wo shi yi zhi Xiao xiao niao", groups: undefined]
var regNew = /wo/i;
reg.compile(regNew);
console.log(reg.exec(str)); //["wo", index: 0, input: "wo shi yi zhi Xiao xiao niao", groups: undefined]

补充:在全局匹配的模式下,exec和test方法匹配到第一个字符串的时候,会把它对应的索引存储起来,下一次再检索同一字符串时,会从刚才存储的位置开始检索。最后当检索结果为null时,下一次从头开始。当然如果没有加g进行全局匹配的话,每次都是从头开始查找。

字符串的模式匹配

上面是正则的方法,下面是字符串的匹配方法,都可以用来匹配。

match()

只接受一个参数,正则表达式或者RegExp对象。(和正则的exec方法一样)。数组第一项是与整个模式匹配的字符串,之后的每一项保存着正则表达式中的捕获组匹配的字符串

var test = "cat, bat, sat, fat";
var pattern = /.at/;
<!--与pattern.exec(test)相同,index表示匹配项在字符串中的位置,input表示应用正则表达式的整个字符串-->
var result = test.match(pattern); // ["cat", index: 0, input: "cat, bat, sat, fat"]
search()

参数与match相同,返回字符串中第一个匹配项的索引。如果没有就返回-1。

var test = "cat, bat, sat, fat";
var pos = test.search(/at/);
alert(pos); //1
replace()

替换字符串,返回值为替换后的字符串,原来的字符串不变。

如果第一个参数是字符串,则替换的只是第一个匹配项,如果想全部替换就得用正则表达式。

var str = "cccc";
console.log(str.replace("c", "老王")); //老王ccc
console.log(str.replace(/c/g,"老王")); //老王老王老王老王

特殊字符

特殊字符,顾名思义就是有特殊含义的字符,所以没办法直接匹配,如果要匹配以下字符,需要在前面加一个转义字符 \。

  • $:匹配输入字符的行尾位置(以...结尾)。

  • (xyz):里面放一个子表达式,作为一组整体去匹配。

  • x*:匹配前面的子表达式0或多次x。

  • x+:匹配前面的表达式1次或多次,最少一次。

  • :匹配除换行符之外的任意单字符。

  • [a-z0-9]:匹配中括号表达式中的任何一个。a-z和0-9之间任意一个。

  • x?:匹配前面的子表达式零次或一次x,或指明一个非贪婪限定符。

  • \:标记特殊字符的转义字符

  • ^:匹配输入字符串开始的位置,在中括号使用表示非的意思。

  • x{n}:匹配正好n个x,注意是连续的。

  • x{n,}:匹配最少n个x,连续的。

  • x{n,m}:匹配最少0个最多m个,连续的x。

  • x|y:表示x、y两项之间的一个选择。

//首字符不能是数字(不能以数字开头)
var parrent = /^\D/;
var str = "_cdd";
console.log(parrent.test(str));

//首字符必须是数字(以数字开头)
var parrent = /^\d/;
console.log(parrent.test(str));

//必须以字母结尾
var parrent = /[a-zA-Z]$/;
var str = "ss_";
console.log(parrent.test(str));

非打印字符

  • \f:换页符

  • \n:匹配一个换行符

  • \r:回车符

  • \s:匹配任何空白字符,包括空格、制表符、换页符等[\f\n\r\t\v]

  • \S:匹配任何非空白字符,

  • \t:制表符

  • \v:垂直制表符

  • \d:匹配数字,效果同[0-9]

  • \w:匹配数字、字母、。效果同[0-9a-zA-Z]

  • \W:匹配非数字、字母、下划线。同[^0-9a-zA-Z_]

//匹配 数字、字母中的任意一个和ABC
var parrent = /[0-9a-zA-Z]ABC/i;
var str = "eABcCds_ABCsdf";
console.log(parrent.test(str));//true

//匹配 数字、空白字符中的任意一个
var str = "this is 3haha";
var parrent = /[\d\s]/;
console.log(parrent.test(str));//true

//匹配 包含 b和空白字符和x
var str = "this is b xhaha.";
var parrent = /b\sx/;
console.log(parrent.test(str));//true

//按照空格或,或!中的任意一个进行字符串切割
var str = "this is a box,box,box!";
console.log(str.split(/[ ,!]/));//["this", "is", "a", "box", "box", "box", ""]

相关文章

  • java正则使用

    正则切割 正则捕获 正则完全匹配

  • regexp 正则包

    正则对象 正则使用都是通过创建对应的正则对象,调用对象方法所实现。 新建正则对象 正则对象属性方法 正则方法 一般...

  • 个人书画作品之四

    写楷心得 字正则心正,心正则人正,人正则德正,德正则身正, 身正则形正,形正则意正, 意正则气正,一气化三清。 ...

  • 第七天正则表达式

    正则表达式的理念: 正则的使用方法: 正则里string两个方法: 使用正则找字母的几种写法: 正则的转义: 正则...

  • 心正笔正

    心正则意正!心正则身正! 心正则言正!心正则行正! 心正则笔正!心正则字正! 心正则并勤!勤尽则字成! 心清则目明...

  • git一次删除多个文件

    正则 非正则

  • day17-正则表达式

    正则表达式符号含义 通配符与正则区别? 正则表达式中注意事项 正则表达式分类: 基本正则(BRE) ※ 扩展正则表...

  • Js正则匹配常用案例

    1 用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 前端表单验证常用的15个JS正则表达式

    1.用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 2019-06-15 JS

    email正则, url正则

网友评论

      本文标题:正则

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