什么是 RegExp?
正则表达式描述了字符的模式对象。
当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。
简单的模式可以是一个单独的字符。
更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。
您可以规定字符串中的检索位置,以及要检索的字符类型,等等。
RegExp对象是原生JavaScript中表示正则表达式的对象。
创建对象的方法为:var RegExp = new RegExp(pattern, attributes);
参数pattern指定正则表达式的规则或者表示正则表达式模式的字符串;
参数attributes为可选参数,表示匹配模式的修饰符。包含3个参数:
1. i:执行对大小写不敏感匹配;
<script text="text/javascript"> var txt = 'Hello World!' var reg = new RegExp('hello', 'i'); if(reg.test(txt)) { console.log(txt.match(reg)); }</script>
2. g:执行全局匹配(查找所有匹配项而非找到第一个匹配项后停止);
<script text="text/javascript"> var txt = 'This is just a test.' var reg = new RegExp('is', 'g');//区分大小写 var reg01 = new RegExp('is', 'gi');//不区分大小写 if(reg.test(txt)) { console.log(txt.match(reg));//["is", "is"] console.log(txt.match(reg).length);//2 }</script>
3. m:执行多行匹配(若不设置该属性,^($)只与整个被搜索字符串的开始(结尾)位置开始匹配;若设置该属性,^($)还可以与被搜索字符串的“/r”或“/n”之后位置开始匹配)。
<script type="text/javascript"> //以下代码不能够匹配字符串"an",尽管"an"后面已经换行了,但"an"并不是字符串行的结尾。 var txt1 = 'This is an/n apple'; var reg1 = /an$/; console.log(txt1.match(reg1));//null //以下代码能够匹配到字符串"an" var txt2 = 'This is an/n apple'; var reg2 = /an$/m; console.log(txt2.match(reg2));//["an", index: 8, input: "This is an↵ apple"] //以下是多行匹配开头示例 var txt3 = 'This is an/n apple'; var reg3 = /^/sapp/; console.log(txt3.match(reg3));//null var txt4 = 'This is an/n apple'; var reg4 = /^/sapp/m;// /^ app/m console.log(txt4.match(reg4));//[" app", index: 11, input: "This is an↵ apple"]</script>
i,g,m三个修饰符可以相互组合同时使用。
以上m修饰符中的示例中var reg4 = /^/sapp/的"/"是一个转义字符,如果使用构造函数创建RegExp对象时,应将正则表达式中的"/"用"//"进行代替:
<script type="text/javascript"> var txt4 = 'This is an/n apple'; var reg4 = new RegExp('^//sapp', 'm'); console.log(txt4.match(reg4));//[" app", index: 11, input: "This is an↵ apple"]</script>
新闻热点
疑难解答
图片精选