正则表达式——学习总结
javascript中简单应用正则表达式
1.判断str是否为"abc"
<script> var reg = /^abc$/, str = "abc"; alert(reg.test(str)); // true </script>
2.全局匹配'is'(忽略大小写)
<script> var reg = /is/ig, str = "this is test for 'Is'"; console.log(str.match(reg)); // Array[3]={"is","is","Is"} </script>
3.寻找字符a或A
<script> var reg = /a/, regexp = new RegExp(reg,"i"), // reg为字符串其中ig无效 str = "hello A,yes"; alert(regexp.test(str)); // true </script>
正则表达式语法
常用元字符
. 除换行以外任意字符
\w 字母数字下划线
\s 空白字符
\d 数字
\b 单词开始或结束
^ 字符串开始
$ 字符串结束
转义符
\\
\*
\.
\(
限定符
* 0或更多次
+ 1或更多次
? 0或1次
{n} n次
{n,}
{n,m}
范围字符 []
[aeiou]
[0-9] \d
[a-z0-9A-Z] \w
分歧条件 |
0\d{2}-\d{8}|0\d{3}-\d{7}
0712-2564250
027-48385562
分组 ()
(\d{1,3}\.){3}\d{1,3}
192.168.5.22
反义
\W
\S
\D
\B
练习
(1) 校验邮政编码(由六位组成)
^\d{6}$
(2) 校验用户姓名:只能输入1-30个以字母开头的字串。
^[a-zA-Z]\w{0,29}$
(3) 校验密码:只能输入6-20个字母、数字、下划线
^\w{6,20}$
(4) 校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串。
^[a-zA-Z][a-zA-Z0-9_.]{4,19}$
(5) 校验E-mail地址
^\w+@\w+(\.\w+)+$
(6) 变量(首字母或下划线,字母下划线数字,长度1-31)
^[a-zA-Z_]\w{0,30}$
(7) 人民币金额检测(1、1.2、1.25、.25、0.25、-.2)
^(0|-?[1-9]\d*(\.\d\d?)?|-?0\.\d\d?)$
分析
/d{1,4}|m{1,4}|yy(?:yy)?(HhMsTt)\1?|[LloSZ]|"[^"]*"|'[^']*'/g
<script> var reg = /d{1,4}|m{1,4}|yy(?:yy)?(HhMsTt)\1?|[LloSZ]|"[^"]*"|'[^']*'/g, str = "dd_mmm_yyyyHhMsTtHhMsTtL\"str\"_\'str\'"; console.log(str.match(reg)); // ["dd", "mmm", "yyyyHhMsTtHhMsTt", "L", ""str"", "'str'"] </script>
(?:exp) 查找exp但不分组
\1 分组引用,相当于第一个分组(关于如何分组?...)。
参考 (references)
...