1、RegExp构造函数第一个参数为正则表达式的文本内容,而第一个参数则为可选项标志.标志可以组合使用 g (全文查找) i (忽略大小写) m (多行查找) gi/匹配所有的a或Avar re = new RegExp(/匹配所有的a或A正则表达式还有另一种正则表达式字面量的声明方式 /a/gi;var re = /a/gi;和正则表达式相关的方法和属性 正则表达式对象的方法 test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。compile,
2、把正则表达式编译为内部格式,从而执行得更快。正则表达式对象的属性 source,返回正则表达式模式的文本的复本。只读。lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。$1.$9,返回九个在模式匹配期间找到的、最近保存的部分。input ($_),返回执行规范表述查找的字符串。lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符。lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。leftContext ($),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。rightContext ($)
3、,返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。String对象一些和正则表达式相关的方法 match,找到一个或多个正则表达式的匹配。replace,替换与正则表达式匹配的子串。search,检索与正则表达式相匹配的值。split,把字符串分割为字符串数组。测试正则表达式是如何工作的!1. /test方法,测试字符串,符合模式时返回true,否则返回false 2. var/he/;/最简单的正则表达式,将匹配he这个单词 3. varstrhe; 4. alert(re.test(str);/true 5. strwe6. alert(re.test(str);/fal
4、se 7. strHE8. alert(re.test(str);/false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case-insensitive的表示) 9. re/he/i;10. alert(re.test(str);11. strCertainly!Helovesher!12. alert(re.test(str);/true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用和$ 13. re/he/i;/脱字符()代表字符开始位置 14. alert(re.test(str);/false,因为he不在str最开始 15. s
5、trisagoodboy!16. alert(re.test(str);/true,He是字符开始位置,还需要使用$ 17. re/he$/i;/$表示字符结束位置 18. alert(re.test(str);19. strHe20. alert(re.test(str);21. /当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用=或indexOf 22. re/s/;/s匹配任何空白字符,包括空格、制表符、换页符等等 23. str=userName/用户名包含空格 24. alert(re.test(str);25. str/用户名包含制表符 26. alert(
6、re.test(str);27. re=/a-z/i;/匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写 28. str=variableName/变量名必须以字母开头 29. alert(re.test(str);30. str=123abc31. alert(re.test(str);/false /test方法,测试字符串,符合模式时返回true,否则返回false var re = /he/;/最简单的正则表达式,将匹配he这个单词 var str = alert(re.test(str);/true str = /false/false,大写,如果要大小写都匹配可以指定i标
7、志(i是ignoreCase或case-insensitive的表示) re = /he/i;He loves her!/true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用和$ re = /he/i;/脱字符()代表字符开始位置/false,因为he不在str最开始He is a good boy!/true,He是字符开始位置,还需要使用$ re = /he$/i;/$表示字符结束位置 /当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用=或indexOf re = /s/;/ s匹配任何空白字符,包括空格、制表符、换页符等等 str=
8、 user Name/用户名包含空格user Name/用户名包含制表符 re=/a-z/i;/匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写 str=/变量名必须以字母开头当然,仅仅知道了字符串是否匹配模式还不够,我们还需要知道哪些字符匹配了模式 osVersionUbuntu8/其中的8表示系统主版本号 /a-z+s+d+$/i;/+号表示字符至少要出现1次,s表示空白字符,d表示一个数字 3. alert(re.test(osVersion);/true,但我们想知道主版本号 4. /另一个方法exec,返回一个数组,数组的第一个元素为完整的匹配内容 5. re=/a-z+s
9、+d+$/i;6. arrre.exec(osVersion);7. alert(arr0);/将osVersion完整输出,因为整个字符串刚好匹配re 8. /我只需要取出数字 9. re=/d+/;10. vararr11. alert(arr0);/8 var osVersion = Ubuntu 8/其中的8表示系统主版本号 var re = /a-z+s+d+$/i; /+号表示字符至少要出现1次,s表示空白字符,d表示一个数字 alert(re.test(osVersion);/true,但我们想知道主版本号 /另一个方法exec,返回一个数组,数组的第一个元素为完整的匹配内容 r
10、e=/a-z+s+d+$/i; arr = re.exec(osVersion); alert(arr0);/将osVersion完整输出,因为整个字符串刚好匹配re /我只需要取出数字 re=/d+/; var arr = re.exec(osVersion);/8更复杂的用法,使用子匹配 1. /exec返回的数组第1到n元素中包含的是匹配中出现的任意一个子匹配 2. re=/a-z+s+(d+)$/i;/用()来创建子匹配 3. arr=re.exec(osVersion);4. alert(arr0);/整个osVersion,也就是正则表达式的完整匹配 5. alert(arr1);
11、/8,第一个子匹配,事实也可以这样取出主版本号 6. alert(arr.length);/2 7. osVersion8.10/取出主版本号和次版本号 8. re/a-z+s+(d+).(d+)$/i;/.是正则表达式元字符之一,若要用它的字面意义须转义 9. arr10. alert(arr0);/完整的osVersion 11. alert(arr1);/8 12. alert(arr2);/10 /exec返回的数组第1到n元素中包含的是匹配中出现的任意一个子匹配 re=/a-z+s+(d+)$/i;/用()来创建子匹配 arr =re.exec(osVersion);/整个osVer
12、sion,也就是正则表达式的完整匹配 alert(arr1);/8,第一个子匹配,事实也可以这样取出主版本号 alert(arr.length);/2 osVersion = Ubuntu 8.10/取出主版本号和次版本号 re = /a-z+s+(d+).(d+)$/i;/.是正则表达式元字符之一,若要用它的字面意义须转义/完整的osVersion alert(arr2);/10注意,当字符串不匹配re时,exec方法将返回nullString对象的一些和正则表达式有关的方法 1. /replace方法,用于替换字符串 =somemoney3. alert(str.replace(somem
13、uch);/muchmoney 4. /replace的第一个参数可以为正则表达式 5. var/空白字符 6. alert(str.replace(re,%/some%money 7. /在不知道字符串中有多少空白字符时,正则表达式极为方便 8. strtsometf/s+/;10. alert(str.replace(re,#/但这样只会将第一次出现的一堆空白字符替换掉 11. /因为一个正则表达式只能进行一次匹配,s+匹配了第一个空格后就退出了 12. re/s+/g;/g,全局标志,将使正则表达式匹配整个字符串 13. alert(str.replace(re,/somesomesom
14、e 14. /另一个与之相似的是split 15. vara-bd-c16. varstr.split(-/返回bdc 17. /如果str是用户输入的,他可能输入a-bd-c也可能输入abdc或a_bd_c,但不会是abdc(这样就说他输错了) 18. stra_db-c/用户以他喜欢的方式加分隔符s 19. re=/a-z/i;/前面我们说表示字符开始,但在里它表示一个负字符集 20. /匹配任何不在指定范围内的任意字符,这里将匹配除字母处的所有字符 21. arrstr.split(re);/仍返回;22. /在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是searc
15、h 23. strMyage18.Goldenage!/年龄不是一定的,我们用indexOf不能查找它的位置 24. re/d+/;25. alert(str.search(re);/返回查找到的字符串开始下标10 26. /注意,因为查找本身就是出现第一次就立即返回,所以无需在search时使用g标志 27. /下面的代码虽然不出错,但g标志是多余的 28. re=/d+/g;29. alert(str.search(re);/仍然是10 /replace方法,用于替换字符串 var str =some money alert(str.replace(/much money /replace
16、的第一个参数可以为正则表达式 var re = /s/;/空白字符 alert(str.replace(re,/some%money /在不知道字符串中有多少空白字符时,正则表达式极为方便 str =some some tsometf re = /s+/;/但这样只会将第一次出现的一堆空白字符替换掉 /因为一个正则表达式只能进行一次匹配,s+匹配了第一个空格后就退出了 re = /s+/g;/g,全局标志,将使正则表达式匹配整个字符串/somesomesome /另一个与之相似的是split var arr = str.split( /如果str是用户输入的,他可能输入a-bd-c也可能输入a
17、 bd c或a_bd_c,但不会是abdc(这样就说他输错了)/用户以他喜欢的方式加分隔符s re=/a-z/i;/前面我们说表示字符开始,但在里它表示一个负字符集 /匹配任何不在指定范围内的任意字符,这里将匹配除字母处的所有字符 arr = str.split(re); /在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是searchMy age is 18.Golden age!/年龄不是一定的,我们用indexOf不能查找它的位置 re = /d+/; alert(str.search(re);/返回查找到的字符串开始下标10 /注意,因为查找本身就是出现第一次就立即返
18、回,所以无需在search时使用g标志 /下面的代码虽然不出错,但g标志是多余的 re=/d+/g;/仍然是10注意,当search方法没有找到匹配时,将返回-1 类似于exec方法,String对象的match方法也用于将字符串与正则表达式进行匹配并返回结果数组 nameCJ.Helloeveryone!/A-Z/;/匹配所有大写字母 str.match(re);/返回数组 4. alert(arr);/数组中只会包含一个M,因为我们没有使用全局匹配 5. re/A-Z/g;7. alert(arr);/M,C,J,H 8. /从字符串中抽取单词 /ba-zb/i;/b表示单词边界 10.
19、stronetwothreefour11. alert(str.match(re);/one,two,three,fourMy name is CJ.Hello everyone! var re = /A-Z/;/匹配所有大写字母 var arr = str.match(re);/返回数组 alert(arr);/数组中只会包含一个M,因为我们没有使用全局匹配 re = /A-Z/g; arr = str.match(re);/M,C,J,H /从字符串中抽取单词 re = /ba-zb/i;/b表示单词边界one two three four alert(str.match(re);/one
20、,two,three,fourRegExp对象实例的一些属性 /a-z/i;2. alert(re.source);/将a-z字符串输出 3. /请注意,直接alert(re)会将正则表达式连同前向斜线与标志输出,这是re.toString方法定义的 var re = /a-z/i; alert(re.source);/将a-z字符串输出 /请注意,直接alert(re)会将正则表达式连同前向斜线与标志输出,这是re.toString方法定义的每个RegExp对象的实例具有lastIndex属性,它是被查找字符串中下一次成功匹配的开始位置,默认值是-1。 lastIndex 属性被 RegEx
21、p 对象的 exec 和 test 方法修改.并且它是可写的. 2. /exec方法执行后,修改了re的lastIndex属性, Hello,World!4. varre.exec(str);5. alert(re.lastIndex);/0,因为没有设置全局标志 6. re7. arr8. alert(re.lastIndex);/1 10. alert(re.lastIndex);/7 /exec方法执行后,修改了re的lastIndex属性, var arr = re.exec(str); alert(re.lastIndex);/0,因为没有设置全局标志 arr = re.exec(str);/1/7当匹配失败(后面没有匹配),或lastIndex值大于字符串长度时,再执行exec等方法会将lastIndex设为0(开始位置) 3. re.lastIndex120;/0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1