接着上篇,这篇我们以一个手机号码的匹配进化历程来学习正则的相关知识点。记住了,我们要匹配一个手机号(用正则表达式),整篇就是干这个事。目的是学习正表达式的使用。
假设我们需要匹配的手机号为:18857012018
/18857012018/.test(“ 18857012018”);
// fal
/18857012018/.test(“ 18857012018”);
// true
/18857012018/.test(“ui18857012018dd”);
// true
正则表达式在匹配时,只要输出匹配内容就返回true,不考虑前面的ui和后面的dd。最后这种情况显然不是我们想要的。
如何精准匹配了,接着往下看。
1、^匹配起始位置
/^http:/.test(“http://www.163.com”);
// true
/^http:/.test(“ahttp://www.163.com”);
//fal
/^http:/.test(“https://www.微笑作文400字163.com”);猪女出装
//fal
2、$匹配结尾位置
/.jpg$/.test(“1.jpg”); //true
/.jpg$/.test(“1.jpg png”); //fal
/.jpg$/.test(“1.png”); //fal
/.jpg$/.test(“regexp.png”); //fal
3、b匹配一个单词边界
正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置。这里所谓的边界就是匹配位置。
/bisb/.test(“this”); //fal
/bisb/.test(“that is reg”); //true
/bisb/.test(“thatisreg”); //fal
/b[ss]cript/; // 匹配非边界
最后一个正则表达式/b[ss]cript/能够与”javascript”和”/postscript”匹配,但不与”script”与”script”匹配,因为b表示非边界匹配。
讲清楚上面三点之后,现在我们来对一开始提到的那个电话号码的例子进行进一步的改造。改造之后是这样的:
/^18857012018$/.test(“18857012018”); //true
/^18857012018$/.tes英雄联盟迅捷斥候出装t(“ui18857012018dd”);//fal
/^18857012018$/.test(“13712345674″);//fal
这样看,是不是解决了号码前后有字符不匹配的情况,但是细心的同学会发现, 这个正则只能识别这个标准的手机号码,能不能用一种电话号码格式识别所有的电话号码了?如果能,那这个表达式不就更通用了嘛。
回答是有的,不急,继续往下看
语法应用举例,比如:
/[0-9]/.test(“123”) //true
/[0-9]/.test(“asd”) //fal
/[^0-9]/.test(“asd”) //true
/[a-z]/.test(“asd”) //true
/./.test(“allen”) //true
/./.test(“12″) //true
/[a-z]/.test(’12a3′) // true
/[a-z]/.test(‘123’) // fal
有了这些为基础,上面的实例我们就可以进一步改进,电话号码中除了第一位是1,其它每一位都是一个0到9之间的任意数字。所以我们可以这样改进:
/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(“13762571094”);//true
/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(“13712345678″);//true
此刻是不是感觉又好了一点,不过,这显然太长了呢,继续往下看。
关医患沟通心得体会于元字符的概念这里就不详细了,这里列举一些元字符,来看看它们在与正则中都表示什么特殊意义。
^:开头、$:结尾、b:边界。d:[0-9]。d:[^d]s:空白符。s:[^s]w:[a-za-z0-9_]。w:[^w]语法应用举例,比如:
/d/.test(“123″); //true
/d冷门暴利行业/.test(“1dsf”); //true 只要有一个数字就是tru
/d/.test(“1dsf”); //true
/d/.test(“123″); //fal
好了,接着我们在一开始匹配电话号码进行改进:
/^1dddddddddd$/.test(“13762571094”);//true
/^1dddddddddd$/.test(“13712345678”);//true
/^1dddddddddd$/.test(“1376257109x”);//fal
是不是感觉代码比刚刚短了很多了呢?但这还是不够。接着往下看
语法应用举例:
/d*/.test(“abc”);// true
/d+/.test(“abc”);// fal
/d+/.test(“1abc”);// true
接着将上面的匹配电话号码的实例进一步改进:
/^1d{10}$/.test(“13762571094”);//true
/^1d{10}$/.test(“13712345678”);//true
/^1d{10}$/.test(“1376257109x”);//fal
整篇文章分了四个部分来讲,每次都用举例的方式讲清楚一个语法之后就接着对贯串全文的匹配电话号码的例子进行改造,有节奏的将正则匹配的常用语法,讲了一遍,希望对大家带来益处。如有本文有讲的不对的对方,欢迎留言。
本文发布于:2023-04-05 14:48:34,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/aaeee2cc376e0249f57c12b7b377c75d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:正则表达式匹配手机号格式(python正则表达式匹配汉字方法).doc
本文 PDF 下载地址:正则表达式匹配手机号格式(python正则表达式匹配汉字方法).pdf
留言与评论(共有 0 条评论) |