常用正则验证
//Email地址
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g
//手机号码
/^1[3-9]\d{9}$/g
//固定电话
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
//国内固话
\d{3}-\d{8}|\d{4}-\d{7}
//身份证号码(15位、18位数字)
^\d{15}|\d{18}$
//中国邮政编码(中国邮政编码为6位数字)
[1-9]\d{5}(?!\d)
//IP地址
((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
//URL
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
//匹配HTML标签
/<(?:(?:\/?[A-Za-z]\w*\b(?:[=\s](['"]?)[\s\S]*?\1)*)|(?:!--[\s\S]*?--))\/?>/g
//img src
/<img [^>]*src=['"]([^'"]+)[^>]*>/
//抽取注释
<!--(.*?)-->
//判断IE的版本
^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$
//金额校验,精确到2位小数
^[0-9]+(.[0-9]{2})?$
//输入数字或者小数
/^\d*\.?\d*$/g
//1000->1,000
str.replace(/\B(?=(\d{3})+(?!\d))/g,',')
//取闭合标签
str.match(/(<span class="blue">)([\S\s]*?)(\<\/span>)/g)
案例:
- 为符合条件的日期替换成中文日期
string.replace(/^(\d{4})[/-](\d{2})[/-](/d{2})1年3日')
()=>分组;$1反向引用
正则分析
正则分析01
-
()代表group
-
@就是代表字符串'@'
i:忽略字母大小写 g:全局 m:多行搜索(换行)
字符类:
-
[]:使用元字符来构建一个简单的类,所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符。
例如:[abc]把字符a或b或c归为一类,表达式可以匹配这类字符。
[abc] - 取反则只要添加[^abc]这样就行了。//none of a|b|c
范围类:
- [a-z]、[A-Z]、[0-9]等
- 可以连写[a-zA-Z0-9-]意思是:a-z大小写和数字以及'-'
预定义类:
- \d==[0-9]
- \D==[^0-9]
- \s==空白符
- \S==非空白符
- \w==[a-zA-Z_0-9]
- \W==[^a-zA-Z_0-9]
- .==[^\r\n]除了回车换行的任意字符
范围边界:
- ^代表start,以...作为开始。后面定义
- $代表end,以...作为结束。前面定义
- \b 代表单词边界
- \B 代表非单词边界
量词:
- ? == {0,1}
- + == {1,n}
- * == {0,n}
- {n} 意味着出现n次
- {n,m} 意味着出现n到m次
- {n,}至少出现n次
- {,n}最多出现n次
特殊
- \1 必须与小括号配合使用;所获取的第1个()匹配的引用。意思就是和第一个匹配的值相同。(\d)(a)\1 和(\d)值相同。
Back reference (group = 1) - \2 必须与小括号配合使用;所获取的第2个()匹配的引用。意思就是和第二个匹配的值相同。(\d)(a)\2和(\a)值相同。
Back reference (group = 2)
贪婪模式
正则表达式默认尽可能多的匹配。
var str = "123456789"
str.replace(/\d{3,6}/,'换成这个')
// 替换成这个789
非贪婪模式
让正则表达式尽可能少的匹配,一旦成功就不再继续尝试。
- {3,5}?量词后面加问号就行了
var str = "123456789"
str.replace(/\d{3,6}?/,'换成这个')
// 替换成这个456789
网友评论