JS正则表达式学习总结
JS正则:java RegExp对象,它是对字符串执行模式匹配的强大工具。运用最多的就是在输入处验证输入的字符串是否合法,指定用户输入字符串的格式。
定义方法:
1:直接量语法:var re=/pattern/attributes
2:创建RegExp对象法:var re=new RegExp("pattern","attributes")
pattern:这里可以是字符串,也可以是正则表达式对象。 //注:当使用创建RegExp对象法时,如果pattern是正则表达式,则不用写第二个参数。
attributes:匹配方式。它只有三个参数:i,g,m。 i:表示不区分大小写匹配。g:查找所有匹配,而非查找到第一个就停止。m:多行匹配。
例:var re=/a/ig var re=new RegExp("a","ig") //表示匹配所有的a和A。这两种写法是一样的。
正则表达式的定义规则(这里主要讲如何书写pattern参数):
1:方括号[]:表示匹配括号中的所有字符
var re=/[a-z]/ //表示满足小写a-z的字符串 如:a34vas3
var re1=/[abc][def0-9]/ //表示两个满足条件并且要相邻的字符串 如:5a8zcf
2:花括号{}:表示匹配多少个字符,通常与方括号[]一起使用
var re =/[a-z]{3}/ //表示要有连续的三个小写字母的字符串 如:t34bgp5jip8
/** var re1=/[a]{1-3}/ //表示满足连续三个a的字符串 如:rgb89aaacd 这种写法是错误的,并没有这种1-3的写法**/
var re2=/[a]{1,3}/ //逗号,表示或者的意思 这里灰色之前是有误解,{1,3}表示区间,表示大于等于1,小于等于3个都是可以的 如:rabcaaadaa
3:小括号():表示提取字符串,匹配到的字符串可以通过$0-9可获取匹配的字符串,这个会在后面的例子中介绍到。
三种括号的更多使用可以参照:https://www.cnblogs.com/signheart/p/20a396bdbdeb9aa446663395eea4e3c4.html
4:^符号:
4.1表示匹配一个字符串的开头 var re=/^[a-z]/ //表示以小写字母开头的字符串 如:a45jdkl
4.2如果^符号出现在[]中的第一个字符位置,表示不包含此字符串 var re=/[^a] //表示字符串中不能有a 如:rgb123
5:$符号:表示匹配一个字符串的结尾
var re=/d$/ //表示以d结尾的字符串 如:abcd
6:转义字符 \
| 字符 | 描述 | 备注 |
| . | 查找单个字符,除了换行和行结束符。 | |
| \w | 查找单词字符 | 等价于[A-Za-z0-9] |
| \W | 查找非单词字符 | 等价于[^A-Za-z0-9] |
| \d | 查找数字。 | 等价于[0-9] |
| \D | 查找非数字字符。 | 等价于[^0-9] |
| \s | 查找空白字符。 | 包括空格、TAB、换页符 |
| \S | 查找非空白字符。 | |
| \b | 匹配单词边界 | |
| \B | 匹配非单词边界。 | |
| \0 | 查找 NUL 字符。 | |
| \n | 查找换行符。 | |
| \f | 查找换页符。 | |
| \r | 查找回车符 | |
| \t | 查找制表符。 | |
| \v | 查找垂直制表符。 | |
| \xxx | 查找以八进制数 xxx 规定的字符。 | |
| \xdd | 查找以十六进制数 dd 规定的字符。 | |
| \uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
7:量词
| 量词 | 描述 | 例子 |
| n+ | +号表示匹配任何包含至少一个 n 的字符串 | var re=/\d+/ 如:abcdefg |
| n* | 匹配任何包含零个或多个 n 的字符串。 | var re=/ab*/ 如:a123abb |
| n? | 匹配任何包含零个或一个 n 的字符串 | var re=/do(es)?/ 如:doAnddoes |
| n{X} | 匹配包含 X 个 n 的序列的字符串。 | var re=/[0-9]{2}/ 如:abc |
| n{X,Y} | 匹配包含 X 或 Y 个 n 的序列的字符串。 | var re=/[0-9]{2,3}/ 如:ab |
| n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 | var re=/[0-9]{2,} 如:abc |
| ?=n | 匹配任何其后紧接指定字符串 n 的字符串 | var re=/a(?=12|34) 如:a12a34a67 |
| ?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 | var re=/a(?!12|34) 如a66a77a12 |
一些常用的javaScript正则表达式:
1:用户名正则
var userPattern=/^[a-zA-Z0-9-_]{4-16}$/ //用户名只能由4-16位的大小写字母、数字、-、_组成
2:密码强度正则
var passPattern=/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).*$/ //至少是有6位,必须至少要有一个数字、大小写字母,特殊字符
3:整数正则
var intPattern=/^\d+$/正整数 var intPattern1=/^-\d$/负整数 var intPattern2=/^-?\d$/所有整数
4:Email正则
var emailPattern=/^([a-zA-Z0-9_\-\.])+\@([a-zA-Z0-9_\-\.])+\.([a-zA-Z]{2-4})$/ //注:这里的+号不是连接,而是与前面的小括号连接,表示要有一个或多个字符
5:中文正则
var chinesePattern=/^[\u4e00-\u9fa5]+$/
6:手机号码正则
var iphonePattern=/^(1[0-9]{10})$/
这里只列举了一部分常用的正则,如有需要可查看更多正则:http://www.jqhtml.com/6915.html //日期正则,身份证正则,URL正则,IPV4正则等。
正则表达式的方法:
1:test()方法:在字符串中查找符合正则的内容,若查找得到返回true,否则false;
格式:正则.test(字符串);
emailPattern.test("123_456@qq_mail.com") //返回true
2:search()方法:搜索符合正则的第一次出现的位置,若搜索到返回第一次出现的位置,否则返回-1。
格式:字符串.search(正则);
var str="abcd@mail.com"; str.search(/@/); //返回4
3:match()方法:获取正则匹配的结果,以数组的形式返回。
格式:字符串.match(正则);
"123ab45cd678".match(/\d+/g); //返回 [123,45,678],若这里不是全局匹配则返回["123",index:0,"123ab45cd678"],就只会返回第一个
4:exec()方法:捕获符合正则的字符串,若捕获到符合正则的字符串返回一个Array的实例,但它包含了两个额外的属性index和input。index表示符合正则字符串出现的位置;input表示字符串表达式的字符串。
格式:正则.exec(字符串)
var textArray=/.bc/.exec("abc12abc3abc45"); //textArray.index=0;textArray.input="abc12abc3abc45";textArray[0]=abc;
var textArray=/.bc/g.exec("abc12bbc3cbc45"); //textArray.index=0;textArray[0]="abc";textArray[1]="bbc";textArray[2]="cbc";
5:replace方法:用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
格式:字符串.replace(正则|字符串,字符串|回调函数)
5.1字符串.replace(字符串,字符串|回调函数) //这里回调函数必须返回的是一个字符串
"abcde12345abc".replace("abc","mmm"); //return:mmmde12345abc
5.2字符串.replace(正则,字符串)
"abcde12345abc".replace(/abc/g,"mmm"); //return:mmmde12345mmm
5.3字符串.replace(正则,回调函数)
每匹配到一个正则就会调用一次回调函数,每次回调都会传递以下参数:
result:本次匹配到的结果
$1-$9:正则中有多少个()就表示有多少个参数
offset:记录本次匹配的开始位置
source:接受匹配的原始字符串
replace搭配JS正则的一些案例:
5.3.1:去掉字符串两边的空格
" abc ".replace(/(^\s+)|(\s+$)/g,function(){
return "";
})
5.3.2:提取URL中的参数和参数值
var obj={};
var url="www.emilzs.com/action?name=emilzs&age=18"
url.replace(/([^&=]+)=([^&=]*)/gi,function(rs,$1,$2){
obj[$1]=$2; //注:当第一次匹配到正则时$1为name,$2为emilzs。当第二次匹配到正则时$1为age,$2为18
})
5.3.4:在指定位置插入新字符串
str.replace(/(.{3})/,function(rs,$1){
return $1+"xyz"; //注:其实这种方法的意思就是将str字符串前3个字符替换成前3个字符+"xyz"
})
5.3.5:将电话号码加密
var str=number.slice(3,7);
number.replace(new RegExp(str,g),"******"); 15123456789 --> 151*****789
JS正则表达式学习总结的更多相关文章
- JS正则表达式学习记录
JS:正则表达式学习记录 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- js正则表达式学习
//几种字符串操作:var str = 'abcdef'; alert(str.search('b')); //弹出1:返回的是b在str中的位置:如果找不到返回-1: alert(str.subst ...
- Js正则表达式学习之test和compile的简单介绍
RegExp 对象用于规定在文本中检索的内容. 定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegEx ...
- js 正则表达式学习笔记
正则表达式正则表达式是由一个字符序列形成的搜索模型 语法new RegExp("[abc]")/[abc]//正则表达式主体/修饰符(可选) 1.修饰符i 忽略大小写g 执行全局匹 ...
- 【正则】精通JS正则表达式,没消化 信息量太大,好文
http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...
- js之学习正则表达式
看了掘金的一个作者写的JS正则表达式完整教程 受益匪浅,感谢作者的无私奉献.在此,做下笔记. 目录 0. 目录 1. 正则表达式字符匹配 1.1.字符组 1.2.量词 1.3.多选分支 1.4.案例分 ...
- js正则表达式replace里有变量的解决方法用到RegExp类
一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
- js 正则学习小记之NFA引擎
原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣. 求抱大腿,求大神调教. 之前大致有个印象,正 ...
随机推荐
- JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)
第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...
- AD中添加中文字符丝印的方法:
一 一般中文丝印: 用快捷键L打开层管理,在View options中勾选convert special 选项: 用快捷键P,S文本中输入你要的汉字,选中ture type,在select ture ...
- 《java学习三》jvm性能优化------jconsul
利用jconsul检测线程死锁, 死锁的线程,会有 已锁定 三个字 visualVm 也在jdk里 VisualVM 是一款免费的,集成了多 ...
- C#oracle还原imp实例
C#来做oracle还原,调用oracle自带函数imp.exe时,需要注意的是:1.imp.exe 中fromuser 和touser两个关键字: fromuser与exp.exe中的owner对应 ...
- logback整合Logstash
1.依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logsta ...
- GitHub上优秀Android 开源项目
GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...
- python-day1作业(感谢视频老师留的作业)
__author__ = 'zht' #!/usr/bin/env python # -*- coding: utf-8 -*- ''' #努力学习每一天 ''' #尝试次数计数器 tries = 0 ...
- Git基础使用教程(仓库初始化,源码clone,源码push)
一.下载Git源码管理客户端 Git下载地址:https://git-scm.com/ 二.检查电脑是否已安装Git 1)已安装:输入git出现下图提示则代表已安装成功. 2)未安装情况下git会出现 ...
- gd调试命令,gdb调试core文件
使用 gcc -g test.c -o test.out 编译程序,只有加-g参数才支持gdb调试: 然后 gdb ./test.out 运行可执行文件,进入gdb调试模式(gdb),在括号后面的输入 ...
- uva 10328 - Coin Toss 投硬币(dp递推,大数)
题意:抛出n次硬币(有顺序),求至少k个以上的连续正面的情况的种数. 思路:转换成求抛n个硬币,至多k-1个连续的情况种数,用所有可能出现的情况种数减去至多k-1个的情况,就得到答案了.此题涉及大数加 ...