js创建正则表达式的两种方式及正则在字符串方法中的应用

发布于:2020-03-26 16:59:55

本文介绍,js创建正则表达式的两种方式,及正则在字符串方法search,match,split,replace中的应用,带综合案例。

一、创建正则表达式的两种方式

1.new RegExp("","gim")

第一个参数为正则表达式,为字符串,在用到的时候需要转义\ 第二个参数为修饰符 可为gim


/*
 new RegExp("","gim")
 * g表示全局搜索
 * i表示忽略大小写
 * m表示换行
 * */
var str = "124xiaogou"
var reg = new RegExp("\d[a-z]","ig");
console.log(str.match(reg)); //["4x"]
console.log(reg.exec(str));//["4x", index: 2, input: "124xiaogou", groups: undefined]

2.第二种方式var reg = /XXX/ig;

var reg = /\d[a-z]/ig;
console.log(str.match(reg)); //["4x"]
console.log(reg.exec(str));//["4x", index: 2, input: "124xiaogou", groups: undefined]

二、正则对象的方法

两种方式创建正则表达式返回的都是一个正则对象如reg

reg上的方法有 reg.exec和reg.test。

reg.exec(str) exec:用来检索字符串中的是否有匹配值,有的话则返回一个数组,如果正则中用了分组匹配,

则数组中第一个值为字符串本身,第二个为第一个分组,第三个为第二个分组结果等等。没有匹配到,则返回null。

reg.test(str) test:用来检索指定值,返回值为true和false

三、正则在字符串方法search,match,replace,split上的使用。

search: 匹配是否有匹配值,返回字符串中的第一个与正则表达式想匹配的子字符串的起始位置,没有找到返回-1。

var reg = /s/ig;
var str = "124xiaogou"
console.log(str.search(reg)); ///打印-1

match: 找到一个或多个正则表达式的匹配值,找到则返回一个数组

var reg = /s/ig;
var str = "124xiaogou"
console.log(str.match(reg)); ///null

replace: 替换与正则表达式匹配的值

var reg = /xiao/ig;
var str = "124xiaogou"
console.log(str.replace(reg,"***")); //124***gou

//再如,用replace实现交换数字和字母的位置
var reg = /(\d+)([a-z]+)/ig;
var str = "124xiaogou"
console.log(str.replace(reg,"$2$1")); //xiaogou124

split: 把字符串分割成数组

var reg = /o/ig;
var str = "124xiaogou"
console.log(str.split(reg)); //["124xia", "g", "u"]
//再如,把非符号的单词或数字分割放入数组
 var reg = /[\s,?\b]+/ig;
var str = "i am 124,xiao,gou?"
console.log(str.split(reg)); //["124xia", "g", "u"]

综合示例:

用正则表达式如何将var str = " i am 124, xiao, gou ?";

分割成数组 ['i', 'am', '124', 'xiao', 'gou']。

注意前后标点符号,关键就是来解决这个问题。

var str = " i am 124, xiao, gou ?"
var reg = /^(\W+)\b(.*)\b(\W+)$/ig;
var str = " i am 124, xiao, gou ?"
var res = reg.exec(str);
console.log(res); 
//结果[" i am 124, xiao, gou ?", " ", "i am 124, xiao, gou", " ?", index: 0, input: " i am 124, xiao, gou ?", groups: undefined]
//正则reg中使用了三个分组,结果res[2]为第二个分组(.*)结果,离我们的目标最近,我们拿到res[2]继续用split处理

res[2].split(/[\W]+/g) //["i", "am", "124", "xiao", "gou"]


最后哪怕是var str = "/?.,> i am 124, xiao, gou ?+^"都一样可以处理:

js创建正则表达式的两种方式及正则在字符串方法中的应用

标签: javascript,JS正则
评论

点赞

收藏

0/500 字数

发布

取消