学习 正则表达式 js java c# python 通用
正则表达式 js java c# python
学习网站
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp
概念
- 正则表达式是为了解决字符串操作中一些比较麻烦的场景,比如字符串提取、字符串替换、字符串验证等
- 常用于:表单验证:是否是一个数字、是一个电话号码、是一个邮箱。。。
- 字符串替换:
- 字符串查找
正则表达式其实也是js里面的一个对象
创建一个正则表达式
var reg2=new RegExp("a");var reg1=/a/;- 其中//是标记,a表示要匹配的字符
正则表达式匹配
var reg=/a/; //匹配字符串中的a字符
reg.test("abc");
//正则表达式的test用来检测字符串是否满足正则表达式的要求;
//由于"abc"中存在a,所以是符合要求的,所以这段代码的返回值为:true
const isTrue = reg.test("coke"); //由于"coke"中不存在a字符,所以不符合条件 -->isTrue:false
var reg2=/abc/;
reg2.test("adbcd"); //字符串中必然存在"abc"才符合要求,所以这段代码的返回值为false
reg2.test("1abc"); //true
reg2.test("abc123"); //true
reg2.test("abcabc"); //true
正则表达式特殊字符
字符类别
. 表示除了换行符(\r \n)以外的任意字符
var reg=/./;
reg.test("a"); //true
reg.test("."); //true
reg.test("\r"); //false
reg.test("1\r"); //存在一个1,不是换行符,所以结果为:true
reg.test("\r\n"); //false //注意点:如果以后要匹配.字符,不要直接写.
//为了匹配qq邮箱,写了 /qq.com/ 这是一个错误的写法:
//=>/qq.com/不仅匹配:"qq.com"也匹配"qq3com" "qq@com" //解决方案:/qq\.com/ 或者 /qq[.]com/\d 表示数字
var reg=/\d/;
reg.test("123abc"); //由于存在一个数字,所以结果为true
reg.test("abcde"); //由于不存在任何数字,所以结果为false //扩展:
var _reg=/\d\d/;
_reg.test("1b"); //不存在2个连续数字,所以结果为:false
_reg.test("a12c"); //存在2个连续数字,结果为:true //匹配手机号码:出现了连续11个数字
var isCellphoneNumber=/\d\d\d\d\d\d\d\d\d\d\d/;案例:匹配手机号码
var reg = /\d\d\d\d\d\d\d\d\d\d\d/;
reg.test("13532159091"); //true
reg.test("17380889395"); //true
reg.test("a7380889395"); //false\D 是\d的取反结果,表示不是数字
var reg=/\D/;
_reg.test("123"); //由于全是数字,所以结果为:false
_reg.test("123a"); //存在一个字母,所以结果为:true var reg2=/123\D5/;
_reg.test("12345"); //false
_reg.test("123b5"); //true\w 匹配字母、数字、下划线 ,三者满足其一即可
var reg=/\w/;
reg.test("123"); //存在数字,结果为:true
reg.test("a"); //true
reg.test("1"); //true
reg.test("_"); //true
reg.test("-"); //false
reg.test("."); //false reg.test("1."); //true
reg.test("_\r\n"); //true
reg.test("\r\n"); //false\W 是\w的取反
\s 表示一个空白字符(例如:\r \n \t 空格 。。。)
var reg=/\s/;
reg.test("abc def"); //存在一个空白,结果为:true
reg.test("abc\r123"); //存在一个\r,结果为:true
reg.test("abc"); //false\S 是\s的取反
`js var reg=/\S/; reg.test(" \r \n "); //全是空白字符,结果为false reg.test("123 abc"); //存在一个空白,结果为true
var reg3=/\s\S/;
reg3.test(" a"); //true
reg3.test("a "); //false
reg3.test("a b"); //true
+ \ 转义字符
```js
var reg=/./; //匹配除了换行符以外的任意字符
var reg=/\./; //匹配.字符
var reg=/\//; //匹配一个正斜杠:/
var reg=/[/]/; //。。。。。。。。。
- 案例:匹配邮箱
//asfas.com
//123ad.com
//ABC12.com
//abc_1.com
var reg =/\w\w\w\w\w\.com/;
字符集合
[]
var reg=/[1a2b3]/; //匹配一个字符,这个字符必须是:1/a/2/b/3其中一种,如果是就表示满足,如果不是就不满足
reg.test("a"); //结果为:true
reg.test("3"); //结果为:true
reg.test("fg5678"); //一个符合要求的字符都不存在,结果为:false
reg.test("a999999"); //结果为:true //升级版
var reg2=/[123][abc]/; //为了匹配连续2个字符,第一个字符必须在1/2/3之内,第二个字符必须在a/b/c之内
reg2.test("2a"); //true
reg2.test("3c"); //true
reg2.test("1basdfasf"); //true
reg2.test("asdfasdf1c"); //存在符合条件的1c,结果为:true
reg2.test("39"); //false var reg2=/[0-9]/; //匹配数字0-9之间,任何一个数字 等价于:/\d/
var reg3=/[a-z]/; //匹配小写字母
var reg4=/[A-Z]/; //匹配大写字母
var reg5=/[a-zA-Z]/;//匹配所有字母
var reg6=/[A-Za-z]/;//.......... var reg10=/[0-9abc]/;
reg10.test("3");//true
reg10.test("five");//false
reg10.test("banana");//true- [^]
var reg=/[^123]/; //匹配一个字符,但是这个字符既不是1 并且 不是2 并且 不是3
reg.test("a"); //true
reg.test("3"); //false
reg.test("123"); //没有1,2,3以外的字符,结果为:false
reg.test("a123"); //存在一个符合条件的a,所以结果为:true
边界
- ^ 表示字符串最左边
$ 表示字符串最右边
var reg=/^abc/; //表示以abc开头
reg.test("123abc123"); //并不是以abc开头,结果为:false
reg.test("abc123"); //以abc开头,结果为:truevar reg=/abc$/; //表示以abc结尾
reg.test("123abc"); //结果为:true
reg.test("abc123"); //结果为:false
reg.test("123bc"); //结果为:false`js //匹配一个手机号码 (11位)-->(1)+(10位数字) var reg=/1\d\d\d\d\d\d\d\d\d\d/; reg.test("13166668888a"); //truevar reg2=/^1\d\d\d\d\d\d\d\d\d\d$/; reg2.test("13166668888a"); //false reg2.test("13166668888"); //true
var reg3=/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/;
```js
var reg=/^abc$/; //表示字符串abc
reg.test("abc"); //结果为:true
reg.test("123abc"); //结果为:false
量词
*出现0次或多次var reg=/\d*/;
reg.test("123"); //true
reg.test("234"); //true var reg3=/1\d*/;
reg3.test("1"); //true
reg3.test("123"); //true
reg3.test("a123") //true
reg3.test("a123456b"); //false+出现1次或多次(至少一次)var reg=/1\d+/;
reg.test("1"); //false
reg.test("123"); //true?出现0次或一次var reg=/1\d?/;
reg.test("12"); //true
reg.test("1"); //true{3}出现3次var reg=/1\w{5}/;
reg.test("1abc"); //false
reg.test("112345"); //true
reg.test("1abc12"); //true{3,}至少出现3次var reg=/\d{2,}/;
reg.test("12"); //true
reg.test("5"); //false{3,5}出现3-5次var reg=/abc{3}/; //表示匹配abccc
reg.test("123abccc123"); //结果为:true var reg3=/(abc){2}/; //匹配abcabc|或者var reg=/abc|123/; //表示匹配abc或者123 reg.test("abc456"); //true var reg5=/^abc|123$/; //匹配以abc开头,或者以123结尾
reg5.test("abcafsadfasd");//true
reg5.test("afsdfasdf123");//true var reg6=/^(abc|123)$/; //匹配abc/123()分组//010-88889999
//0576-12312312
//0895-1234567
var reg=/(\d{3,4})-(\d{7,8})/; //匹配电话号码
var arr="021-33335555".match(/(\d{3,4})-(\d{7,8})/)
arr[0] //全部
arr[1] //第一组:区号:021
arr[2] //第二组:号码:333355555var reg=/(\d{3,4})-(\d{7,8})/;
"021-33335555".replace(/(\d{3,4})-(\d{7,8})/,'区号是:$1')
//区号是:021
var str="[object Array]";
var str2="[object Object]";
var str3='[object Function]';
var str4='[object Date]';
str.replace("[object ","").replace("]","").toLowerCase();
str.replace(/\[object /,"").replace(/\]/,"").toLowerCase();
//这样的话正则表达式只匹配一次,也就是说后面的]换不掉
str.replace(/\[object |\]/,"").toLowerCase();
//如何解决?进行全局匹配
str.replace(/\[object |\]/g,"").toLowerCase();
str.replace(/[^\s]+\s/,"").replace(/\]/,"")
案例:匹配邮箱
案例:匹配电话座机
作业1
jquery:选择器引擎:Sizzle大量的使用了正则表达式
$("#abc") //id
$(".abc") //类
$("span") //标签
作业2:写一个正则表达式,用于替换一个字符串的前后空格
- 比如:" asdffsf asdfasfsd asfas a "替换为"asdffsf asdfasfsd asfas a"
学习 正则表达式 js java c# python 通用的更多相关文章
- Go学习笔记 - 关于Java、Python、Go编程思想的不同
***看了两周七牛团队翻译的<Go语言程序设计>,基本上领略到了Go语言的魅力.学习一个语言,语法什么的任何人都是很容易学会,难就难在充分领略到这门编程语言的思想.*** ## 面向对象 ...
- 关于Java、Python、Go编程思想的不同
Go学习笔记 - 关于Java.Python.Go编程思想的不同 看了两周七牛团队翻译的<Go语言程序设计>,基本上领略到了Go语言的魅力.学习一个语言,语法什么的任何人都是很容易学会,难 ...
- Java or Python?测试开发工程师如何选择合适的编程语言?
很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对 ...
- Java VS Python 应该先学哪个?
http://blog.segmentfault.com/hlcfan/1190000000361407 http://www.tuicool.com/articles/fqAzqi Java 和 P ...
- python学习 正则表达式
一.re 模块中 1.re.match #从开始位置开始匹配,如果开头没有match()就返回none 语法:re.match(pattern, string, flags=0) pattern 匹配 ...
- Android开发学习之路--Java和Js互相调用
随着前端的火热,以前开发的快速,越来越多的native app在其中融合了h5,就拿淘宝就是很多的h5组成的,一旦出现什么节日,他都可以不用通过更新app来实现界面的改变,而且android和io ...
- 关于Visual Studio调试C/C++,JS,PHP,JAVA,Python等语言的方法
我在开始接触vs code后,确实对它的高颜值和小巧灵活而着迷,但是有一个非常现实的问题,相对于vs来说,vscode是一个代码编辑器,而不是一个IDE,在代码编译运行上存在着极大的问题,尤其是开始编 ...
- 最近整理出了有关大数据,微服务,分布式,Java,Python,Web前端,产品运营,交互等1.7G的学习资料,有视频教程,源码,课件,工具,面试题等等。这里将珍藏多年的资源免费分享给各位小伙伴们
大数据,微服务,分布式,Java,Python,Web前端,产品运营,交互 领取方式在篇尾!!! 基础篇.互联网架构,高级程序员必备视频,Linux系统.JVM.大型分布式电商项目实战视频...... ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
随机推荐
- Appium(四):真实机第一个appium程序、模拟器第一个appium程序、查看元素
1. 真实机第一个appium程序 学完了前面的知识,也将环境搭建好了,接下来我们就正式开始appium的学习了. 在做app自动化的时候,我们肯定是针对某个产品.某个软件进行测试,那么我们一定是先让 ...
- windows的两种sshd服务器安装
关于windows的服务器,后来好像微软发布了专用的windows ssh服务器组件.通过win 10的linux子系统因该是可以安装ssh服务器.这两种都没有使用过. 有一个freesshd的免费软 ...
- win10禁止自动更新的终极方法(亲测有效)
想必用过win10的朋友对其自动更新一定不会陌生,并且深恶痛绝, 有时正专注做一件事,突然就开始自动更新,被杀个措手不及,而且更新时间真的太久了,尤其最近更新频繁,真是伤脑筋, 期间也尝试 ...
- Linux配置svn服务器版本库
1)创建版本库首先使用yum安装subversion 2)创建版本库 svnadmin create /home/svn/svnfile 3)进入conf目录 authz ...
- 使用matplotlib.pyplot中scatter()绘制散点图
1.二维散点图 二维散点图的函数原型: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=Non ...
- Spring Boot Redis 解析
redis使用示例 本示例主要内容 使用lettuce操作redis redis字符串存储(RedisStringController.java) redis对象存储(RedisObjectContr ...
- 用户APC的执行过程
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 用户APC的执行过程 一.一个启发式问题 有一个问题,线程什么时候 ...
- Jmeter元件——JSON Extractor后置处理器介绍2
在前段时间将JSON Extractor元件做了个简单的介绍:Jmeter元件——JSON Extractor后置处理器介绍1,今天以一个具体的json,以不同的方式提取数据做个详细的介绍. 一.模拟 ...
- Kubernetes的三种探针
k8s支持存活livenessProbe和就绪readinessProbe两种探针 两种探针都支持以下三种方式 1.exec 通过执行shell命令的方式,判断退出状态码是否是0 示例 exec: c ...
- python assert断言用法
作用:断言函数运行状态 语法:assert condition,判断condition运行状态,若condition状态为false,则上报错误:AssertionError