今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中。

python中的正则提取:

import re
str = \'asfasdfgasffas青蛙无法·啊沙发上,。,从  dw2efdrqw15894648760asfasf\' \
      \'asf,./asf029-81464970jhklasdnf,wsdn15888888888\'
patt = \'1[3,5,8,7]\d{9}|0\d{2}-\d{8}\'
data = re.findall(patt, str)
print(data)

js中的正则提取:

<script>
        $(\'#id1\').click(function () {
            var test = \'asfasdfhakj啊是法律dsh15894648760asfadf欺负我,。, 。qwe  jfwj029-81464970asfafaflame\';
            var patt= /1[3,5,8,7]\d{9}|0\d{2}-\d{8}/g;
            alert(test.match(patt))
        })
    </script>

两者主要区别:

  

 (1)在python中,正则表达式其本质上是一个字符串,所以用引号括起来,但是在JS中,正则必须以斜杠符号 / 来包围,如 

/1[3,5,8,7]\d{9}|0\d{2}-\d{8}/ 并且不能加引号。
 (2)在匹配模式中,js仅仅支持 g 全局搜索, i忽略大小写, m 多行匹配这三种, 但是python支持更多。
 (3)js中匹配并替换是replace函数,在python中是sub() js中的replace无论使用正则表达式还是字符串本身,默认情况下仅仅替换第一个匹配项。
 (4)JS以 / 来标识正则表达式,以引号标识字符串。
 (5) JS与Python都有match函数,但是意义大不相同。Python中match方法是指从字符串开始进行匹配,但是在js中match方法是类似于匹配全部,
与python中的findall()非常接近。但是还是有区别滴: 如果在js的正则中后一个/后加上g,那就与python中的findall一毛一样。会返回所有匹配到的值,
但是如果没有g,就只会返回第一个匹配到的值
 (6) JS 中的search()与Python中字符串的find方法和正则表达式re模块中的search方法一样, 但是js会返回字符串的下标索引,而非字符串。

还有疏忽的地方,来日想起来再补充吧。这儿有个别的大佬写的,栗子啥的挺全的:

大佬链接:https://www.cnblogs.com/dyfblog/p/6077122.html

 

想了解更多Python关于爬虫、数据分析的内容,欢迎大家关注我的微信公众号:悟道Python

  

版权声明:本文为ss-py原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ss-py/p/9827365.html