JS-正则表达式
-
正则表达式的简介
—用于定义一些字符串的规则,计算机可以根据正则表达式检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来;
—正则表达式实际上可以看作是一个对象;
—创建正则表达式:
1. 构造函数创建语法:
var 变量 = new RegExp("正则表达式","匹配模式");
2. 参数一:正则表达式,参数二:匹配模式;两个参数都为字符串;
3. 在构造函数中可以传递一个匹配模式(字符参数)作为第二个参数,其中参数可以为:
i:表示忽略大小写;
g:表示全局匹配模式;
—使用
typeof
检查创建的正则对象,返回Object
;—正则表达式的方法:
test()
,使用该方法可以检查一个字符串是否符合正则表达式的规则,如果符合则返回true
,否则返回false
;—正则表达式严格区分大小写;
<script> //创建正则表达式 //这个正则表达式可以检查字符串中是否含有a var reg = new RegExp("a"); var str = "a"; //检验字符串是否符合正则表达式 var result = reg.test(str); console.log(result); </script>
-
正则表达式语法
使用字面量创建正则表达式:
—语法:
var 变量 = /正则表达式/匹配模式;
—注意,这里创建的正则表达式和匹配模式不用传递字符串,即不需要添加引号;
—使用字面量方式创建更加简单,使用构造函数创建更加灵活;
正则语法:
—使用**|表示或者的意思,[]中内容也是或的关系**;
—检查字符串中是否有任意小写字母:
/[a-z]/
;任意字母:/[A-z]/
;—检查一个字符串中是否含有abc或者adc或者aec:
/a[bde]c/
;—[^ ]表示除了[]中的内容都可以;
—
/[0-9]/
表示任意的数字;/[^0-9]/
表示除了数字;量词
—通过量词可以设置一个内容出现的次数;
—语法:
/正则表达式{次数}/
表示指定内容正好出现特定次数;—量词只对其前面的内容起作用;如果想要指定多个正则内容,需要将其用括号括起来:
/(正则内容){次数}/
—
{m,n}
表示指定正则内容出现m至n次;{m,}
表示指定内容出现m次以上;—
/正则内容+/
表示指定内容至少一个,相当于{1,}
;—
/正则内容*/
表示指定内容0个或多个,相当于{0,}
;—
/正则内容?/
表示指定内容0个或者1个,相当于{0,1}
;—
/^正则内容/
,检查字符串是否以指定内容开头;(匹配开头内容)—
/正则内容$/
,检查字符串是否以指定内容结尾;(匹配结尾内容)—
/^正则内容$/
,如果在正则表达式中,同时使用^
和$
,则要求字符串必须完全符合正则表达式;—
^指定内容|指定内容$
,表示以指定内容开头或者以指定内容结尾;注意:一般构建正则表达式时,一定要写成:
^指定内容$
这样的形式;可以在网上搜索现成的常用正则表达式,但是一定要检查使用,修改成适用于自己的正则表达式;<script> //创建一个正则表达式,检查一个字符串是否是一个合法的手机号 /* 手机号规则: 1. 11位数字; 2. 手机号第一位必须以1开头;^1 3. 手机号第二位数字是3-9任意数组;[3-9] 4. 三位以后任意数字9个;[0-9]{9}$ $表示它之后不能再有其他内容 5. ^和$必须同时存在,表示字符串完全匹配我们设计的正则表达式; */ var phoneNum = "13567820978"; //创建正则表达式 var phoneReg = /^1[3-9][0-9]{9}$/; console.log(phoneReg.test(phoneNum)); </script>
—
/./
表示任意字符;转义字符
—在正则表达式中,使用
\
作为转义字符;/\./
表示正则表达式中含有.
;—
\\
:表示\
,注意在字符串中也需要\\表示\
;—注意使用构造函数时,由于它的参数是字符串形式,而
\
是字符串中的转义字符,如果需要使用\
,则在传递参数时需要传递\\
;var reg = new RegExp("\\.");返回/\./
—
/\w/
:表示任意字母、数字和下划线;/[A-z0-9_]/
—
/\W/
:表示除了字母、数字和下划线以外的字符;/[^A-z0-9_]/
—
/\d/
:任意数字;/[0-9]/
—
/\D/
:除了数字;/[^0-9]/
—
/\s/
:空格;—
/\S/
:除了空格的字符;—
/\b/
:单词边界;—
/\B/
:除了单词边界的字符;<script> //创建正则表达式检查一个字符串是否含有child var reg = /\bchild\b/; console.log(reg.test("hello children")); </script>
<script> //创建正则表达式,去除字符串中多余的空格 var str = prompt("请输入用户名"); str = str.replace(/^\s*|\s*$/g,""); console.log(str); </script>
<script> //邮件的正则表达式 /* 电子邮件格式 1. 开头任意字符数字下划线;\w 2. @ 3. 网址:任意字母数字;[A-z0-9] 4. .任意2-5位的字母;\.[A-z]{2,5} */ var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/; var emailstr = "abc@dk.com"; console.log(emailReg.test(emailstr)): </script>
-
字符串和正则相关的方法
split()
—将一个字符串拆分为一个数组;
—方法中可以传递正则表达式作为参数,这样方法将会根据正则表达式拆分;
—这个方法即使不指定全局匹配,也会全部拆分;
search()
—可以检查字符串中是否含有指定内容;(检查与正则表达式相匹配的值);
—如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1;
—可以接收一个正则表达式作为参数,根据正则表达式去检索字符串;
—该方法只会查找第一个符合内容的字符,不会有全局匹配模式;
match()
—可以根据正则表达式,从一个字符串中将符合条件的内容提取出来;
—默认情况下,
match()
只会找到第一个符合要求的内容,找到以后就停止检索;我们可以设置正则表达式为全局匹配模式g
,这样就会匹配到所有的内容;—可以为一个正则表达式设置多个匹配模式(
//ig
),且顺序无所谓;—
match()
会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果;replace()
—可以将字符串中指定内容替换为新的内容;
—需要传递两个参数:
-
被替换的内容,可以接收一个正则表达式作为参数;
-
替换内容,字符串(新的内容);
—不会影响原数组;
—默认
replace
只会替换第一个指定的被替换内容;—替换内容可以为""空字符串,即可以删除特定内容;
-