好久没有用正则了,差点忘记了。
最近项目中需要些正则,发现了自己很多忽略了的地方。
js正则创建方式
var reg = /at/gvar reg1 = new RegExp("at","g")复制代码
一些常用的
\d 匹配任意一个数字
\D 匹配任意一个非数字
\s 匹配空格(空格包括空白字符、tab、换行符、return/enter)
\S 匹配任意非空字符
\w 匹配任意英文字母,数字,下划线
| 或者
* 所有
\.
?可有可无 等价于{0,1}
正则可以用[]的形式:
[0-9a-zA-Z] //表示数字小写字母大写字母复制代码
用{}表示有多少位
/\d{4}/ //含有4位数字复制代码
正则表示中文
/[\u4e00-\u9fa5]/ //用unicode编码来表示复制代码
元字符有
([{\^}])? * + .}
*********元字符是需要转义的;
之前写正则忽略了分组,特意弥补一下。复制代码
分组 和 \1 \2 \3
写出 能匹配"2017-2-15" "2017.2.15" "2017/2/15"的正则
var reg = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/复制代码
分组就是括号里面的东西,用正则exec匹配
\1就是能匹配第一个小括号里面的正则
\2就是匹配第二个小括号的内容,以此类推
正则的一些其他的方法
var reg = /str/
var str = "str"
正则的一些方法:
(正则用reg表示,字符串用str表示)
reg.test(str)
reg.test(str) //结果值返回是true或者false复制代码
replace(reg,str)
var str2 = " str ";
str2.replace(/(^\s*)|(\s*$)/g,'');str2.replace(/[ ]/g,"")复制代码
str.match(reg)
可以理解为抓取数据,如果有返回数据,如果没有返回null。
reg.exec(str)
返回的结果是一个数组。
var str="I love html5 ,this is javascript"; var reg=/java/;console.log(reg.exec(str));返回 ["java", index: 22, input: "I love html5 ,this is javascript", groups: undefined]复制代码