js正则表达式学习
//几种字符串操作:
var str = 'abcdef';
alert(str.search('b')); //弹出1;返回的是b在str中的位置;如果找不到返回-1;
alert(str.substring(2,5)); //弹出cde;不包括结束位置;
alert(str.substring(1)); //弹出bcdef,从开始位置一直截取到结束位置;
alert(str.charAt(3)); //弹出d,返回的是第3个位置的字符;
var str = '12 fff 87 er334 233 -=-=-=fa80';
alert(str.match(/\d+/g)); //返回字符串数组: 12 87 334 233 80 /*
正则表达式的两种风格
*/
var re = new RegExp('a','i');
var re = /a/i;
//找下面字符串中出现的第一个数字:
var str = 'asdf 23 23 zxcacxzczxc';
var re = /\d/; console.log(str.search(re)); //5 找出第一个数字的位置
match用法:
//关于match:
//match: 把所有匹配的东西,全都提取出来;以数组的形式
var str = 'asdf 34 656 vsd33';
var re = /\d/;
var re2 = /\d/g; //g global 找到全部
var re3 = /\d+/g; alert(str.match(re)); //弹出3
alert(str.match(re2)); //弹出3,4,6,5,6,3,3 因为只告诉了计算机找一个数字
alert(str.match(re3)); //弹出34,656,33
replace用法:
//把所有的a都替换成数字0
var str = 'abc aaa erw';
var re = /a/g; alert(str.replace('a', '0')); //弹出0bc aaa erw;
alert(str.replace(re, '0')); //弹出0bc 000 erw;
replace小例子-敏感词过滤:
<body>
<textarea id='txt1' cols="40" rows="5"></textarea><br>
<input id="btn1" type="button" value="过滤"/><br>
<textarea id='txt2' cols="40" rows="5"></textarea><br>
</body> <script type="text/javascript">
//敏感词过滤
window.onload = function(){
var oTxt1 = document.getElementById("txt1");
var oTxt2 = document.getElementById("txt2");
var oBtn = document.getElementById("btn1"); oBtn.onclick=function(){
var re = /北京|淘宝|百度/g; oTxt2.value = oTxt1.value.replace(re, '***');
}
}
</script>
图:

方括号:
var str = 'apc fpc dpc xpc gpc rpc spc ppc';
var re = /[apx]pc/g; alert(str.match(re)); //弹出apc xpc ppc
偷小说的小例子--过滤HTML标签
html标签规则:<除了<>外任意个字符>
<script type="text/javascript">
//过滤HTML标签:
window.onload=function(){
var oTxt1 = document.getElementById('txt1');
var oTxt2 = document.getElementById('txt2');
var oBtn = document.getElementById('btn1'); oBtn.onclick=function(){
var re = /<[^<>]+>/g; oTxt2.value = oTxt1.value.replace(re, '');
}
}
</script>
图:
例1:校验电话号码:
如电话号码: 010-87496698-86:
区号和分机号都是可有可无的;电话开始一位不能是0,假设电话为8位数字;
假设分机号最多5位 (0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
括号就是分组起来;
例2:校验邮箱:
<body>
<input type="text" id='txt1'>
<input id="btn1" type="button" value="校验"></input>
</body>
<script type="text/javascript">
//校验邮箱:
window.onload=function(){
var oTxt1 = document.getElementById("txt1");
var oBtn = document.getElementById("btn1");
oBtn.onclick=function(){
//从字符串的开头和结尾,只能出现:\w+@[a-z0-9]+\.[a-z]+
//整个字符串都会校验,而不仅仅是校验一部分
var re = /^\w+@[a-z0-9]+\.[a-z]+$/i; //test方法:
//检验oTxt1.value这个字符串是否符合正则re的规则,如果符合返回true
//test 字符串一部分符合要求,true
if(re.test(oTxt1.value)){
alert("合法邮箱");
}else{
alert("非法邮箱");
}
}
}
</script>
量词:
量词:个数
+ 若干(多少都可以,最少1次),等同于{1,}
{n} 正好出现n次
{n, m} 最少n次,最多m次
(n,} 最少n次,最多不限
? 可有可无,相当于{0, 1}
* 0次或多次,相当于{0,} (慎用,容易出问题,要考虑好)
方括号:
方括号
[abc] a或b或c,任选一个即可 [abc]pc 则apc、bpc、cpc都行;
[a-z] 匹配a-z字母
[0-9] 匹配数字
[^a-z] 匹配除了a-z的字母外;
[^a-z0-9] 匹配除了英文字母和数字之外的东西
转义:
转义:
\d 匹配数字 [0-9]
. 任意字符 (慎用,很容易出问题,用了.很可能是没考虑清楚)
\w 英文、数字、下划线 [a-z0-9_]
\s 空白字符 代表所有的空格,包含tab、回车、换行
\D 除了数字 [^0-9]
\W 除了英文数字下划线 [^a-z0-9_]
\S 除了空白字符
行首行尾:
行首行尾:
^ ^不出现在[]里面,代表行首--即字符串的开头
$ 行尾,即字符串结尾;
后面再学到的再继续补充.......
js正则表达式学习的更多相关文章
- JS正则表达式学习记录
JS:正则表达式学习记录 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- JS正则表达式学习总结
JS正则:java RegExp对象,它是对字符串执行模式匹配的强大工具.运用最多的就是在输入处验证输入的字符串是否合法,指定用户输入字符串的格式. 定义方法: 1:直接量语法:var re=/pat ...
- 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 等大神都把正则玩的出神入化后发现我只是个战五渣. 求抱大腿,求大神调教. 之前大致有个印象,正 ...
随机推荐
- redis 原子增一的妙用
有这样一个需求,插入数据库之前需要了解数据库ID号,考虑到不同的主机怎么去协同这个ID呢 同时要保证每个主机分到不同的ID号,这个比较麻烦,如果独立开一个服务来一个C/S操作比较麻烦,幸好REDIS提 ...
- C++中的new与delete
C++中对象数组创建时,主要注意的点有:虚函数和带参数的构造函数,当出现虚函数时,对象数组中如通过父对象指向子对象,因为需要做Slice,析构时会造成指针错误引发内存泄露.测试程序如下: class ...
- supervisord 小记
此篇仅用作supervisord的用法,不涉及理论说明和基础介绍 supervisor(一)基础篇 使用supervisord来管理process 进程的守护神 - Supervisor superv ...
- 微信公众号开发之被逼学web服务端1-----使用SecureCRT连接Linux服务器
做Android的进新公司后安排做微信公众号开发,这基本是后台和前端的活都要由小白的我来做,这两天基本成鸭子了,被填的满满的,却还是不够,博文仅作记录,希望能给后来的小白一点参考吧 今天做的是如何配置 ...
- applicationCache对象
applicationCache对象代表了本地缓存,可以在js中进行一些操作.可以用它来通知用户本地缓存中已经被更新,也允许用户手工更新本地缓存.applicationCache.addEventLi ...
- Java数据类型、变量、运算符、语句。
数据类型:整型 int long short byte小数 double float 字符 char 转义字符:\'(单引号字符) \\(反斜杠字符) \n(换行) \r(回车) \t(水平制表符,相 ...
- 使用gnucash查看任意时间段内的所有者权益变动表
gnucash默认会以当年的会计账期显示所有者权益变动表 如果要看指定时间的所有者权益变动表,需要这样做 打开所有者权益变动表 点击上面的[选项] 如图 在常规中自行选择日期 确定后就能够看到指定时间 ...
- php获取post参数的几种方式 RPC 规定接收取值方式 $GLOBALS['HTTP_RAW_POST_DATA'];
http://www.cnblogs.com/zhepama/p/4022606.html PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. ...
- Linear Algebra lecture1 note
Professor: Gilbert Strang Text: Introduction to Linear Algebra http://web.mit.edu/18.06 Lecture 1 ...
- Windows环境下npm install常见错误
Windows环境下npm install安装包依赖时,常出现一些错误,下面为个人解决办法: 错误一 缺少python环境: G:\nodejs\moviesite\node_modules\bcry ...