正则表达式(一)
- 正则表达式:
我们已经接触过与正则表达式有关的一些概念。例如在Windows操作系统中,用“?”和“*”通配符来查找硬盘上的文件时,“?”通配符匹配文件名中的单个字符,而“*”通配符匹配零个或多个字符。如“data?.dat”就是一种文本模式,它能匹配“data1.dat”、“datan.dat”和“dataw.dat”。“data*.da”是另外一种文本模式,它匹配“data.dat”、“data1.dat”、“datawnc.dat”和“datadiff.dat”等文件名。
正则表达式的功能和概念类似于“*”和“?”通配符所实现的功能和概念,但它的功能更强大,而且更加灵活。下面是我在培训时根据笔记所整理出来的一些简单的正则表达式的使用方法!
- 创建RegExp对象实例的两种方式:
(1)构造函数方式
var reg=new RegExp(“表达式”,“附加参数”);
(2)普通方式
var reg=/表达式/附加参数
附加参数是可选的,用来扩展正则表达式的含义,主要有三个参数:
(1)g:全局匹配。 (2)i:用作忽略大小写的参数。 (3)m:多行匹配。
- test方法
该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的正则表达式模式,如果存在则返回true,否则返回false。
检查字符串中是否存在“world”。
<script type="text/javascript">
var str="hello world";
var regExp=new RegExp("world");
var result=regExp.test(str);
document.write(result); //true
</script>
调用RegExp()的构造函数创建正则表达式对象regExp。调用正则表达式对象的test()方法检查目标字符串str中是否包含模式world。如果在str中查找到模式world,在页面上输出test()的返回值true,否则输出返回值false。
检查字符串中是否存在“world”,并忽略大小写。
<script type="text/javascript">
var str="HELLO WORLD";
var regExp=/world/i;
var result=regExp.test(str);
document.write(result); //true
</script>
将正则表达式/world/i赋给变量regExp,这是用普通方式创建正则表达式对象,附加参数i表示忽略world的大小写,所以在用正则表达式对象的test方法检查“HELLO WORLD”中是否存在“world”模式时,返回值是true。
- exec方法
exec方法使用RegExp对象实例创建时指定的正则表达式模式搜索字符串,并返回一个包含搜索结果的数组。
在“我爱祖国我爱家乡”中搜索“我”,并输出“我”在被搜索的字符串中的位置。
<script type="text/javascript">
var str="我爱祖国我爱家乡";
var regExp=/我/;
var result=regExp.exec(str);
document.write("在索引"+result.index+"位置出现了"+result);
</script>
exec方法返回的数组有index属性,它表示匹配的字符串在整个被搜索字符串中的位置;exec方法每次从字符串的起始位置搜索第一个与模式匹配的字符串。
- 限定符
(1){n}:规定前面的元素或组合项要连续出现n次。
<script type="text/javascript">
var regExp=/he{2}/;
var str="heeel";
var flag= regExp.test(str) document.write(flag);
</script>
执行代码后,在页面上输出true,因为在字符串“heeel”中,存在he{2}文本模式。如果要让正则表达式“he{2}”中的“he”同时受到{2}的作用,必须使用圆括号将它们括起来,使它们成为一个紧密结合的组合项,这样{2}就表示圆括号中的内容连续出现2次。
(2){n,}:规定前面的元素或组合项至少出现n次。例如“o{2,}”,字符串“bod”不能与之匹配,但“foood”可以与之匹配。
(3){n,m}:规定前面的元素或组合项至少连续出现n次,至多连续出现m次,其中n≤m,逗号和数字之间不能有空格。例如“o{1,3}”,字符串“food”和字符串“foood”都能与之匹配。
(4)+:规定前面的元素或组合项必须出现一次或连续出现多次,等效于{1,}。
(5)*:规定前面的元素或组合项可以出现零次或连续多次,等效于{0,}。例如“zo*”,字符串“z”和“zoo”都能与之匹配。
(6)?:规定前面的元素或组合项出现零次或一次,等效于{0,1}。例如“zo?”,字符串“z”和“zo”都能与之匹配。
- 选择匹配符
选择匹配符有且仅有一个,即“|”字符,用于选择匹配两个选项之中的任意一个。例如“chapter|section1”匹配的是“chapter”或“section1”,如果要匹配“chapter1”或“section1”,使用括号,即“(chapter|section)1”。
- 字符匹配符
(1)[…]:匹配方括号中包含的字符集中的任意一个字符。例如,正则表达式“[abc]”,字符“a”、“b”、“c”都可以与之匹配。
(2)[^…]:匹配方括号中未包含的任何字符。例如,正则表达式“[^ab]”,除了字符“a”、“b”之外,其他的任何字符都可以与之匹配。
(3)[a-z],[1-9]:匹配指定范围内的任何字符。 (4)[^a-z],[^1-9]:匹配不在指定的范围内的任何字符。
(5)\d:匹配任意一个数字字符,等效于[0-9]。 (6)\D:匹配任意一个非数字字符,等效于[^0-9]。
(7)\s:匹配任何空白字符,包括空格、制表符等。
(8)\S:匹配任何非空白字符。
(9)\w:匹配任何英文字母、数字和下划线,等效于[A-Za-z0-9_]。 (10)\W:匹配任何非英文字母和数字类字符,但不包括下划线,等效于[^A-Za-z0-9_]。 (11).:匹配除换行符\n之外的任何单字符。
- 常用的正则表达式
1.匹配身份证号码:^\d{15}$|^\d{18}$
2.邮箱:^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$;
3.中国的邮政编码:^\d{6}$
4.匹配字符串中的中文字符:[\u4e00-\u9fa5]
5.验证5到12位的qq号:^\d{5,12}$