[Python自学] day-18

本章目录:

一、JS的正则表达式

JS正则提供了两个方法:

  test():用于判断字符串是否符合规定;

  exec():获取匹配的数据;

1.test()

定义一个正则表达式:

reg = /\d+/;   // 用于判断多个数字
reg.test("akshdjkf78snjdkf");  // 返回true,因为中间含有数字

上述的字符串能够满足正则表达式,所以返回true,但这种匹配无法用于验证手机号。

reg = /^\d+$/;   // 匹配从开头到结尾都是数字
reg.test("13928787837");  // 返回true
reg.test("1237h39284");  //返回false

这样就可以检验是否全是数字。

2.exec()

同样定义一个正则表达式:

reg = /\d+/;
reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["67"]

我们得到的结果是["67"],也就是说只匹配到第一个数字。

全局匹配:

如果我们要想拿到所有符合规则的内容,则需要使用全局匹配:

reg = /\d+/g;
reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["67"]
reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回["89"]
reg.exec("sdufh_67_nsjkd_89_djkjs");  // 返回null

reg.exec("sdufh_67_nsjkd_89_djkjs");  // 再次执行返回["67"]

当匹配到最后一个符合规则的内容后,下一次再次执行会返回null,我们可以用此来判断是否查找完毕。如果在返回null后再次执行,又会从头开始。

分组:

text = "JavaScript is more fun than Java or JavaBeans!";
reg = /\bJava(\w*)\b/g;
reg.exec(text);  //返回["JavaScript","Script"]
reg.exec(text);  //返回["Java",""]
reg.exec(text);  //返回["JavaBeans","Beans"]
reg.exec(text);  //返回null

reg.exec(text);  //返回["JavaScript","Script"]

使用"()"将需要提取的部分括起来就可以获取内容。

匹配模式:

前面我们使用了全局匹配"g",其他还有"i"和"m"模式。

"i"模式:不区分大小写。这个很好理解。

"m"模式:多行模式。这里的多行,不是指可以匹配多行文本("g"默认就可以匹配带换行的文本)。这里的多行是说当在正则表达式中要匹配开头和结尾("^"和"$")的时候,对每一行都生效。例如:

text = "JavaScript is more fun than \nJava or JavaBeans!"
reg = /^Java(\w*)/g;  //匹配以Java开头的单词
reg.exec(text);  //返回["JavaScript","Script"]
reg.exec(text);  //返回null

我们可以看到,如果只是全局模式,只能匹配到JavaScript,因为只有这个单词是位于开头。

我们加上"m"模式:

text = "JavaScript is more fun than \nJava or JavaBeans!"
reg = /^Java(\w*)/gm;  //匹配以Java开头的单词
reg.exec(text);  //返回["JavaScript","Script"]
reg.exec(text);  //返回["Java",""]
reg.exec(text);  //返回null

加上"m"后,位于换行符后面的Java也被当做位于开头的单词。

猜你喜欢

转载自www.cnblogs.com/leokale-zz/p/12018327.html