JavaScript学习(十一)——正则表达式

正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来。

1.创建正则表达式的对象

语法:var  变量 =  new  RegExp("正则表达式","匹配模式");

var  reg=new RegExp("a");

2.正则表达式的test()方法

var  reg=new RegExp("a");
document.write(reg.test("abc"));

上面这一段正则表达式可以检测test()传入的参数串中是否含有正则表达式

3.正则表达式的匹配模式

i:忽略大小写

g:全局匹配模式

var  reg=new RegExp("tbw","i");
document.write(reg.test("Tbw is handsome"));

 4.字面量创建正则表达式

var  reg=/tbw/i;
document.write(reg.test("Tbw is handsome"));

5.使用对象构造函数创建正则表达式相比于使用字面量创建方法,更加灵活,我们可以给构造函数传递一个给定的正则表达式字符串,也可以传递一个变量

6.使用 ‘|’  来表示或的意思

之前那样连续的字符表示连续的字符串存在于检测串才可以,而或的使用可以使得检测串中包含或两边的任意都返回真值

var  reg=/tb|w/i;
document.write(reg.test("w is handsome"));

 

 补充:“[]”中的内容表示的也是或的关系,[a-z]表示任意小写字母,[A-Z]表示任意大写字母,[A-z]表示任意字母,/a[bed]c/表示检查一个字符串中是否含有 abc、adc、aec,/[^ab]/表示除了a和b之外是否还有其他的,/[0-9]/表示任意数字

7.正则表达式和字符串

split()方法可以将一个字符串拆分为一个数组,传入的参数为拆分的点,会从传入的参数后面拆分

如果想要把字母数字混合的数组根据每一个字母拆分,而且不指定匹配模式为全局匹配同样也会全部拆分

var strn="0e1e2e3c4f5t9y";
var res_=strn.split(/[A-z]/);
document.write(res_);

search()方法可以搜索字符串中是否含有指定内容,如果搜到了返回第一次出现的下标,否则返回-1,同时它也可以接收一个正则表达式为参数,然后会根据正则表达式去检索字符串

想要搜索字符串中是否含有abc或者acc或者alc,search()只会查找第一个,哪怕设置全局匹配

var strn="abc mkjpjpv  adc  afc";
var res_=strn.search(/a[bcl]c/);
document.write(res_);

 match()方法可以根据正则表达式从一个字符串中将符合条件的内容提取出来,默认情况下我们的match只会找到第一个符合条件的内容,找到以后就会停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容,而且可以为一个正则表达式设置多个匹配模式,且顺序无所谓

var strn="tbw520is520handsome1654164646846";
var res_=strn.match(/[a-z]/ig);
document.write(res_);

 match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

replace()可以将字符串中指定的内容替换为新的内容,第一个参数是被替换的内容,可以接收一个正则表达式作为参数,第二个参数是替换的新的内容,由于该方法还是默认替换第一个搜索到的,所以我们需要把匹配模式设置为全局匹配

var strn="tbw520is520handsome1654164646846";
var res_=strn.replace(/[0-9]/ig,"@_@");
document.write(res_);

 8.正则表达式语法

量词:通过量词可以设置一个内容的出现次数,量词只对他前边的一个内容起作用,想对前面的连续内容起到重复作用可以使用括号把内容扩起来,

{n}表示出现n次,

{n,m}表示出现n到m次,

{m,}表示出现m次以上,

+表示至少一个,相当于{1,},

*表示0个或多个,相当于{0,},

?表示0个或者1个,相当于{0,1},

^表示开头(和[^av]这种使用不一样)/^a/表示以a开头,$表示结尾/a$/表示以a结尾,注意/^a$/表示单独一个a的正则表达式,而/^a|a$/才表示以a开头或者以a结尾。

‘.’ 表示任意字符,而如果想要一个表示字符的 ".",那么需要使用 '\'作为转义字符  /\./, 而且使用构造函数的时候,由于它的参数是一个字符串,而\是字符串中的转移字符,如果要使用\字符,则需要使用\\来代替

\w——表示任意数字,字母,下划线(_)[A-z0-9_]

\W——表示除了数字,字母,下划线(_)[^A-z0-9_]

\d——表示任意的数字[0-9]

\D——表示除了数字

\s——空格

\S——除了空格

\b——单词边界

\B——除了单词边界

如果不加上单词边界的声明,正则表达式就会匹配整个字符串中是否含有child出现,哪怕是children,而加上了单词边界就可以匹配单独的child单词了。

var zhengZe=/\bchild\b/
var strn="children is happy";
document.write(zhengZe.test(strn));

匹配开头和结尾的空格

var strn="          children is happy             ";
document.write(strn.replace(/ ^\s*|\s*$/g,""));

一个邮件正则表达式的模板: /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/

注意:var kop=new RegExp("\.")var kop=new RegExp(".")执行的效果都是一样的,都是匹配任意的字符串

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页