找到以某个字符串开头的字符串

var myReg=/^(abc)/gim;

如果不加m,那么只找一行,而加了m可以找到每行中以该字符串开头的匹配文本。

如:

abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc

sdfasd
f
asd
f
asd
abcadaabcadfads

不加m只能找到一次,加了能找到两次。

String与正则表达式相关的方法

(1)test()方法

若找到则返回true,否则返回false。

测试如下:

function test1(){
var con=content.innerText;
window.alert(con);
var reg=/abc/gi;
if(reg.test(con)){
window.alert("有abc");
}else{
window.alert("没有abc");
}
}

用法是

reg.test(con)

而不是

con.test(reg);

支持正则表达式的String对象的方法。

search()方法

返回第一个匹配到的文本的起始位置。

var str="visit W3School!";
window.alert(str.search(/W3School/));

输出:6.

(2)match()

它使用正则表达式模式对字符串执行搜索,并返回一个包含搜索结果的数组。

function test2(){
var con=content.innerText;
var myreg=/abc/gi;
res=con.match(myreg);
for(var i=0;i<res.length;i++){
window.alert(i+" "+res[0]);
}
}

(3)replace()

function test3(){
var con=content.innerText;
var myReg=/(\d){4}/gi;
//把四个数,换成
var newCon=con.replace(myReg,"这里原来是四个数");
content.innerText=newCon;
}

函数的返回值是替换后的新字符串。

(4)split(regExp)

该方法可以把字符串按照正则表达式来分割。

RegExp对象的属性

1.  index 是当前表达式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。

2.  lastindex  是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数。

index是静态属性,直接用类名调用。

3.input  返回当前所作用的字符串

4.leftContext  是当前表达式模式最后一个匹配字符左边的所有内容。

5.rightContext  是当前表达式模式最后一个匹配字符串右边的所有内容。

function test4(){
var con=content.innerText;
var myReg=/(\d){4}/gi;
while(res=myReg.exec(con)){
window.alert("index="+RegExp.index+" left="+RegExp.leftContext+" right="+RegExp.rightContext);
}
}

js的RegExp的反向

js引擎在匹配的时候,会把各个子表达式的内容捕获到内存暂存。

子表达式和捕获,反向引用的概念。

反向捕获主要用来要求重复数字的地方。

function test5(){
var con=content.innerText;
var myReg=/(\d)(\d)\2\1/gi;
while(res=myReg.exec(con)){
window.alert(res[0]);
}
}

请思考:aabbccdd找出这样的数。

var myReg=/(\d)\1(\d)\2(\d)\3(\d)\4/gi;
while(res=myReg.exec(con)){
window.alert(res[0]);
}

匹配:五个数字加上一个-然后是如111222333这样的连续重复三次的9个数字

var myReg=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi;
while(res=myReg.exec(con)){
window.alert(res[0]);
}

元字符--限定符

{n,m}说明

n表示至少出现的n次,最多m次,

+说明:

+表示出现1从到任意多次,比如/a+/gi,

?说明:

?表示出现0次到1次,比如/a?/gi,

*说明:

*表示0到任意个。

[0-9]匹配0~9中任意一个数

[a-z]匹配a~z中任意一个字母

[^0-9]匹配不在0-9中的任意一个字符

[^a-z]匹配不在a-z中的任意一个字符

\d 表示可以匹配0-9的任意一个数字,相当于[0-9]

\D 表示可以匹配到不是0-9中的任意一个字符,相当于[^0-9]

\w 匹配任意英文字符、数字和下划线,相当于[0-9a-zA-Z_]

\W 相当于[^a-zA-Z0-9],和\w刚好相反

\s 匹配任何空白字符(空格,制表符等)

\S 匹配任何非空白字符,和\s刚好相反。

. 匹配出\n之外的所有字符,如果要匹配.本身则需要使用\.

function test6(){
var con=content.innerText;
//var myReg=/1{3}/gi;
//var myReg=/1{3,4}/gi;
//var myReg=/1+/gi;
//var myReg=/a1?/gi;
//匹配a1和a;
//var myReg=/[a-z]?/gi;
//var myReg=/\./gi;//匹配.
var myReg=/./gi;//匹配除了\n的任意字符
while(res=myReg.exec(con)){
window.alert(res[0]);
}
}

案例:匹配任意三个连续的字符

\w是匹配英文字符、数字和下划线,并不包括所有字符(不包括不可见字符)。

所以/(\w){3}/gi这样写,私以为不妥。

应该这样写:/[\d\D]{3}/gi。这样写才能包括不可见字符。但是韩老师是这样写

/([\d\D])\1{2}/gi.

特殊字符匹配,如\21,\20

元字符-定位符

^ 符号 说明:匹配目标字符串的开始位置。

$ 符号 说明:匹配目标字符串的结束位置。

[^],^在[]中才是非的含义。

^和$匹配字符串开头和结尾,如果后面跟的字符串不是出现在开头或者结尾,则无法匹配到。

//var myReg=/^han/gi;
var myReg=/han$/gi;
while(res=myReg.exec(con)){
window.alert(res[0]);
}

转移字符,要用\转义才能找到。

需要用到转义符号的字符有以下:

.  *  +  (  )  $  /  \  ?  [  ]  ^  {  }

元字符-选择匹配符

又是偶,我们在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这是你需要用到选择匹配符号 |

var myReg=/(han|韩)/gi;

综合案例:验证输入的字符串是不是一个电子邮件

//综合案例:验证输入的字符串是不是一个电子邮件
function test7(){
var con=content.innerText;
//var myReg=/[a-zA-Z0-9]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
//没有用^,就无法以一系列字符打头
//如果没有^,1430026911@q@qq.com就会被当做邮箱
var myReg=/^[a-zA-Z0-9]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
if(myReg.test(con)){
window.alert("是邮件");
}else{
window.alert("不是邮件");
}
}

js正则表达式(2)的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式

    1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet'  href='bootstrap-3.3.0-dist/dist/css ...

  3. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  4. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  5. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

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

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

  7. JS正则表达式验证账号、手机号、电话和邮箱

    JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...

  8. 初识JS正则表达式

    初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...

  9. 常用JS正则表达式

    常用JS正则表达式 收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水 ...

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

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

随机推荐

  1. [Python] SQLBuilder 演示样例代码

    用Python写一个SQLBuilder.Java版能够从 http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm 看到. 附 ...

  2. 聚合数据Android SDK 12306火车票查询订票演示示例

    1.聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的juhe_sdk_ ...

  3. ZF-net

    ZF-net 摘要: 1.这篇文章的motivation 是 :CNN性能良好,可是我们不知道它为何性能良好.也不知道它怎么能够被提高? 2.本文介绍了一种新方法实现中间层和分类器的可视化 3.採用消 ...

  4. 16进制颜色转换为UIColor

    objc #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >& ...

  5. APU的Vsense引脚的作用

    JACK学习文档推荐: 开关电源PCB布局注意事项 开关电源PCB布线注意事项 一.Sense电压检测(FB) “Sense+”和“Sense-”,就是四线制中的电压检测线,high-sense 和l ...

  6. 一起学android之怎样设置TextView中不同字段的字体颜色(22)

    在这里先看看效果图: OK,有时候,在我们的项目中会要求TextView中文本有一部分的字体颜色不一样.这时我们应该使用 SpannableStringBuilder这个工具类,当然这个类的功能非常强 ...

  7. php减少损耗的方法之一 缓存对象

    即把实例后的对象缓存起来(存入变量),当需要再次实例化时,先去缓存里查看是否存在.存在则返回.否则实例化.

  8. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  9. 【Selenium + Python】路径报错之OSError: [Errno 22] Invalid argument: './t/report/2018-03-23_11:03:12_report.html'

    现象: 此问题真的是太痛苦了,查了好多资料是说路径的问题,结果还是报错,后来一点点的排查才发现原来是!!!!!! 废话不多说上原来代码: if __name__ == '__main__': star ...

  10. YII框架学习(二)

    YII框架的增删改查 例:一个新闻表的增删改查: (1)首先使用gii工具生成控制器和模型 (2)控制器 <?php class NewsController extends Controlle ...