美文网首页
关于正则的一些应用

关于正则的一些应用

作者: VivaLaVida_692c | 来源:发表于2019-04-04 16:16 被阅读0次

正则常用的四个方法:test()  exec()  match()  replace()

test()

验证字符串是否和正则相匹配

用法:regexp.test(string)

结果:若匹配返回true,若不匹配返回false

exec() 

将字符串中匹配的内容捕获出来,只会捕获一次

用法:regexp.exec(string)

返回值:是一个数组,若无分组则数组里的内容包含三项,分别是匹配的内容、匹配内容的起始索引、原字符串

exec()处理分组

返回值:

第一项是匹配的内容

第二项开始是分组(括号里匹配)的内容,有几个分组就有几项

倒数第二项是匹配内容的起始索引

倒数第一项是原字符串

注意:若不需要捕获分布的内容,则在不需要捕获分组的里面加上原字符 ?:(匹配不捕获)

var str = "2018ceshi2019";

var reg = /\d\w/;

console.log(reg.exec(str));//["20", index: 0, input: "2018ceshi2019"]

var reg = /(\d)(\w)/;

console.log(reg.exec(str));//["20", "2", "0", index: 0, input: "2018ceshi2019"]

var reg = /(?:\d)(?:\w)/;

console.log(reg.exec(str));//["20", index: 0, input: "2018ceshi2019"]

match()

将字符串中匹配的内容捕获出来

若加上量词g则一次性捕获所有匹配的内容放到数组里返回,若不加则与exec()的返回值一样

用法:string.match(regexp)

replace()

将字符串中匹配的内容捕获出来

用法:string.replace(值类型 | regexp, 值类型 | 回调函数)

该方法不改变原有字符串

var str = "11a22b33c44d";

var newStr = str.replace(/\d+/g, function ($0,$1,$2) {

    // 第一个形参$0 表示匹配的字符

    // 第二个形参$1 表示匹配字符的起始索引

    // 第三个形参$2 表示原字符串

    return $0*2;

});

console.log(str);//11a22b33c44d

console.log(newStr);//22a44b66c88d

// 若有量词,则分组里面的内容是匹配字符的最后一个字符

var newStr2 = str.replace(/(\d+)/g, function ($0,$1,$2) {

    // 第一个形参$0 表示匹配的字符

    // 若有分组,则从第二个参数开始就是分组的内容

    // 倒数第二个形参 表示匹配字符的起始索引

    // 倒数第一个形参 表示原字符串

    return $0*2;

})

console.log(str);//11a22b33c44d

console.log(newStr2);//22a44b66c88d

经典例题

//大写数字替换小写数字

var str = "38576";

var a = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];

str = str.replace(/\d/g, function () {

    return a[arguments[0]];

});

console.log(str);//叁捌伍柒陆

//排除法

//获取地址栏中的参数并放入对象中

var str = "http://www.baidu.com?id=557131028857&name=ceshi&age=8";

var reg = /([^?=&]+)=([^?=&]+)/g;

var obj = {};

str.replace(reg, function ($0, $1, $2) {

    obj[$1] = $2;

});

console.log(obj);//{id: "557131028857", name: "ceshi", age: "8"}

//去掉html标签

var str="<div id='div1' class='aa'>皇帝被废,太后痛哭流涕,</div><p>皇室威严扫地,群臣无不悲愤。</p>";

var reg = /<[^<>]+>/g;

str = str.replace(reg,"");

console.log(str);//皇帝被废,太后痛哭流涕,皇室威严扫地,群臣无不悲愤。


1.用正则表达式,写出由字母开头,其余由数字、字母、下划线组成的6~30 的字符串?

var aInput = document.getElementsByTagName('input');

var reg = /^[a-zA-Z][\w_]{5,29}/;

aInput[1].onclick = function(){

if(!reg.test(aInput[0].value)){

alert('wrong')

}

else{

alert('right')

}

}

2.写出正确的正则表达式匹配固话号,区号3-4 位,第一位为0,中横线,7-8 位数字,中横线,3-4 位分机号格式的固话号

var aInput = document.getElementsByTagName('input');

var reg = /0[0-9]{2,3}-\d{7,8}/;

aInput[1].onclick = function(){

if(!reg.test(aInput[0].value)){

alert('wrong')

}

else{

alert('right')

}

}

3.统计1 到400 亿之间的自然数中含有多少个1?比如1-21中,有1、10、11、12、13、14、15、16、17、18、19、20、21这些自然数有13 个1

var reg = /1+/;

var num =0;

for(var i=0;i<22;i++){

if(reg.test(i)){

num++

}

}

console.log(num);

4.将字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换成10,{$name}替换成Tony

'<tr><td>{$id}</td><td>{$id}_{$name}</td></tr>'.replace(/{\$id}/g,'10').replace(/{\$name}/g,'Tony');

//   \ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。

//   例如正则表达式\$被用来匹配美元符号,

//   而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符。

5.匹配输入的字符: 第一个必须是字母或下划线开头, 后面就是字母和数字或者下划线构成, 长度5 - 20

var reg = /^[a-zA-Z_][a-zA-Z0-9_]{4,19}/,

name1 = 'leipeng',

name2 = '0leipeng',

name3 = '你好leipeng',

name4 = 'hi';

alert(reg.test(name1));

alert(reg.test(name2));

alert(reg.test(name3));

alert(reg.test(name4));

相关文章

  • 关于正则的一些应用

    正则常用的四个方法:test() exec() match() replace() test() 验证字符串是否和...

  • 正则表达式

    正则表达式介绍: //正则表达式不是js中的独有功能//其他的一些语言中也有正则的实现方式,当我们在查看关于正则的...

  • 网络爬虫--正则

    正则简单应用

  • 网络爬虫--正则

    正则简单应用

  • PHP常用正则表达式汇总

    PHP常用正则表达式汇总 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正...

  • 第六届360前端星计划_正则的三个应用场景

    正则的三个应用场景 主讲人 王峰 360前端技术专家 奇舞团 正则表达式的创建和使用 三个应用场景正则与数值正则与...

  • 正则的应用

    1.' sdasd sdsa sdas dsad '.replace(/^[\s\uFEFF\...

  • 改进正则表达式的性能

    正则表达式的应用原理 正则表达式应用到目标字符串的过程大致分为下面几步: 编译正则表达式。检查正则表达式的正确性,...

  • js正则表达式简单应用

    关于正则表达式,我也是最近才开始学,以前虽然也用到一些正则,不过大多是关于验证,比如验证手机号,邮箱,身份证等等。...

  • 神经网络实践之正则化

    前言 在机器学习的应用层面中,已经了解了神经网络中的一些有关实践层面的正则化方法,本篇文章将会尝试利用各种正则化方...

网友评论

      本文标题:关于正则的一些应用

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