正则表达式基本内容
正则表达式
简介
概念
- RegExp 是正则表达式的缩写
- 当检索某个文本时,可以使用RegExp来描述要检索的内容
- 简单的模式可以是一个单独的字符
- 更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换
- 可以规定字符串中的检索位置,以及要检索的字符类型
作用
- 给定的字符串是否符合正则表达式的过滤逻辑
- 从字符串中获取我们想要的特定部分
- 强大的字符串替换能力
特点
- 灵活性、逻辑性和功能性非常强
- 可以迅速地用极简单的方式达到字符串的复杂控制
返回值
- 一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。
- 如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。
抛出
- SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。
- TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。
元字符
- d 匹配数字
- D 匹配非数字
- w 匹配字母数字下划线
- W 匹配非字母数字下划线
- s 匹配空白符
- S 匹配非空白符
- . 除换行符意外的任意字符
- ^ 以什么开始
- $ 以什么结尾
限定符
- * 重复零次或多次
- + 重复一次或多次
- ? 重复零次或一次
- {n} 重复n次
- {n,} 重复n次或多次
- {n,m} 重复n次到m次
元字符串
- [ ] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
- [ ^] 匹配中括号以内的内容
- 转义符
- | 或者,选择两者中的一个
- ( ) 分组
- [u4e00-u9fa5] 匹配汉字
创建正则对象
- 第一种方式
<script> var reg=new Regex('d','i'); var reg=new Regex('d','gi'); </script>
- 第二种方式
<script> var reg=/\d/i; var reg=/\d/gi; </script>
- i 忽略大小写
- g 全局匹配
- gi 全局匹配+忽略大小写
正则匹配
<script> var dateStr='2015-10-10'; var reg=/^\d{4}-\d{1,2}-\d{1,2}$/ console.log(reg.test(dataStr)); </script>
正则提取
<script> var dateStr='张三:1000,李四:5000,王五:4000'; var array=dataStr.match(/\d+/g); console.log(array); </script>
正则替换
<script> var dateStr='123AD asd qwe ert'; dataStr=dataStr.replace(/\s/g,"xx"); console.log(dataStr); </script>
RegExp对象方法
test
<script> var patt1 = new RegExp("e"); document.write(patt1.test("blue"));//true document.write(patt1.test("lala"));//false </script>
exec
- 检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
<script> var patt1 = new RegExp("e"); document.write(patt1.exec("blue"));//e document.write(patt1.exec("lala"));//null } </script>
- exec()方法可以向 RegExp 对象添加第二个参数,以设定检索
- 在使用g参数时,找到第一个e,并存储其位置,如果再次运行exec(),则从存储的位置开始检索,并找到下一个e,并存储其位置
<script> var patt1 = new RegExp("e","g"); do { result=patt1.exec("red blue yellow green"); document.write(result); } while(result!=null)//eeeeenull </script>
compile
- 既可以改变检索模式,也可以添加或删除第二个参数
<script> var patt1 = new RegExp("e"); document.write(patt1.test("blue"));//true patt1.compile("d"); document.write(patt1.test("blue"));//false } </script>
支持正则表达式的字符串对象方法
search
- 检索与正则表达式相匹配的值
<script> var str="Visit W3School!" document.write(str.search(/W3School/))//6 document.write(str.search(/w3school/))//-1 document.write(str.search(/w3school/i))//6 </script>
match
- 找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置
<script> var str="Hello world!" document.write(str.match("world"))//world document.write(str.match("World"))//null document.write(str.match("worlld"))//null document.write(str.match("world!"))//world! </script>
replace
- 用于在字符串中,用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
<script> var str="Visit Microsoft!" document.write(str.replace(/Microsoft/, "W3School")) //Visit W3School var str="Welcome to Microsoft! " str=str + "lala" str=str + "blue" document.write(str.replace(/Microsoft/g, "W3School")) //Welcome to Microsoft!lalablue </script>
split
- 把字符串分割为字符串数组。
<script> var str="How are you doing today?" document.write(str.split(" ")) //How,are,you,doing,today? document.write(str.split("")) //H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,? document.write(str.split(" ",3)) //How,are,you </script>
相关推荐
wangzhaotongalex 2020-10-20
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
taomengxing 2020-09-07
MaggieRose 2020-08-19
jyj00 2020-08-15
MaggieRose 2020-07-04
modaiairen 2020-06-28
ziggurat 2020-06-28
JnX 2020-06-27
jyj00 2020-06-26
山水沐光 2020-06-25
shqhope 2020-06-23
eroshn 2020-06-21
码墨 2020-06-16
jyj00 2020-07-19
wyq 2020-11-11
TLROJE 2020-10-26