说实话,对正则表达式有些许的畏惧感,之前的每次只要碰到需要正则表达式去匹配的情况,都会刻意的躲过或者直接从度娘处获取。
此时此刻,感觉到了某一个特定的点去触及她。但笔者对于正则表达式使用上的理解是这样的,仅仅对她的发展历史和使用语法粗略的过了一遍,接下来就是一次一次的使用和记录下和她的每次邂逅。慢慢的,就能在心里勾勒出她最美的一面。
本篇仅记录正则表达式在js中的邂逅经历,如有读者想在其中窥探她的某种语法,直接搜索你想要实现的功能即可,例如【特定字符 多次匹配】之类的即可。
1.特定字符 全部匹配
需求:有下面这个字符串【"condition=userName=&age1=2017-06-07&age2=2017-06-14&height1=&height2=&weights1=&weights2=&uaValue1=&uaValue2=&uaphValue1=&uaphValue2="】,需要将字符串中【&】字符全部替换成【;】字符。
实现:
"condition=userName=&age1=2017-06-07&age2=2017-06-14&height1=&height2=&weights1=&weights2=&uaValue1=&uaValue2=&uaphValue1=&uaphValue2=".replace(/&/g,";");
结果:
"condition=userName=;age1=2017-06-07;age2=2017-06-14;height1=;height2=;weights1=;weights2=;uaValue1=;uaValue2=;uaphValue1=;uaphValue2="
说明:replace(正则,要替换为的字符串)
/正则/ ,前后两个斜杠代表js中正则表达式的前后边界
/&/,匹配单个字符&,如果直接使用在上面的情景,仅能替换 原始字符串中的第一个&符号为;,后面的&都不会变化
/&/g,可以匹配上原始字符串中所有的&
2.以匹配10-30位长度的纯数字子字符串为例
js正则表达式[RegExp]使用指南:
注意:正则表达式的书写格式 是 /RegExp/参数 ,不用使用双引号括起来
//查找10-30位 纯数字出现的位置[效果:返回的是子字符串的起始位置]"http://www.baidu.com/sc=1919191921&09923893909912".search(/\d{10,30}/ig)str.search(RegExp)
//替换10-30位 纯数字为>>> [效果:是全局满足条件的子字符串都会进行替换]"http://www.baidu.com/sc=1919191921&09923893909912".replace(/\d{10,30}/ig,">>>")str.replace(RegExp)
//验证字符串中是否有符合正则表达式的子字符串存在[效果:存在10-30长度的纯数字,返回true]/\d{10,30}/ig.test("http://www.baidu.com/sc=1919191921&09923893909912")RegExp.test(str)
//返回第一个匹配上10-30长度的纯数字的子字符串[效果:返回是数组,是满足条件的子字符串和index的对象数组]/\d{10,30}/ig.exec("http://www.baidu.com/sc=1919191921&09923893909912") RegExp.exec(str)
//返回所有匹配上 10-30长度的纯数字的字符串[效果:返回是数组,是满足条件的子字符串的字符串数组]"http://www.baidu.com/sc=1919191921&09923893909912".match(/\d{10,30}/ig) str.match(RegExp)
3.