//几种字符串操作:
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正则表达式学习的更多相关文章

  1. JS正则表达式学习记录

    JS:正则表达式学习记录 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  2. JS正则表达式学习总结

    JS正则:java RegExp对象,它是对字符串执行模式匹配的强大工具.运用最多的就是在输入处验证输入的字符串是否合法,指定用户输入字符串的格式. 定义方法: 1:直接量语法:var re=/pat ...

  3. Js正则表达式学习之test和compile的简单介绍

    RegExp 对象用于规定在文本中检索的内容. 定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegEx ...

  4. js 正则表达式学习笔记

    正则表达式正则表达式是由一个字符序列形成的搜索模型 语法new RegExp("[abc]")/[abc]//正则表达式主体/修饰符(可选) 1.修饰符i 忽略大小写g 执行全局匹 ...

  5. 【正则】精通JS正则表达式,没消化 信息量太大,好文

    http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...

  6. js之学习正则表达式

    看了掘金的一个作者写的JS正则表达式完整教程 受益匪浅,感谢作者的无私奉献.在此,做下笔记. 目录 0. 目录 1. 正则表达式字符匹配 1.1.字符组 1.2.量词 1.3.多选分支 1.4.案例分 ...

  7. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  8. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...

  9. js 正则学习小记之NFA引擎

    原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣.  求抱大腿,求大神调教. 之前大致有个印象,正 ...

随机推荐

  1. CTO干点啥?

    1.负责技术 2.负责人才 3.负责业务(需求) 4.负责组织

  2. 1.3 PROGRAM DEVELOPMENT ENVIRONMENT

    1.3 PROGRAM DEVELOPMENT ENVIRONMENT 1.4 WIN32 EXECUTEABLE FILE FORMAT We should also know that compl ...

  3. USB

    [一].USB(Universal Serial Bus):是通用串行总线的缩写,具有方便易用,动态分配带宽,容错性优越和高性价比等特点. USB接口设备结构分:USB Host(主机)和USB De ...

  4. mysql之替换字符串

    update `wp_posts` set `post_content`=REPLACE(`post_content`,'localhost/linkcp','www.linkcp.cn') wher ...

  5. Android——播放器和图片轮播

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  6. nwjs解决页面透明化,启动时显示白屏的问题

    这些天在弄nwjs还好能访问外网,可以看到官方的文档,要不然真是欲哭无泪了,找不到相关的文档解决不了问题.主要说说怎么页面透明化的时候,出现白屏一闪问题吧.主要工具: AngularJS+node+n ...

  7. Pads怎么设置某一网络的线宽

    在利用pads工具进行layout时,由于某一条网络可能会有很多条走线,而走线的宽度也相同,如果一条条设置,会很麻烦,所以pads中可以直接设置某一网络的线宽,避免繁琐的工作. 如下所示同一网络的走线 ...

  8. JavaScript数据类型之隐式类型转换

    JavaScript的数据类型分为七种,分别为null,undefined,boolean,string,number,object,symbol ( ECMAScript 2015新增).objec ...

  9. Python更换国内源实现快速PIP安装

    WINDOWS 安装pip 1.首先下载安装Python,并将python的安装目录添加进系统环境变量 2.复制这个文件保存为.py并执行 https://bootstrap.pypa.io/get- ...

  10. SQL Server Profiler

    一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...