:replace函数,为写自己的js模板做准备 待完善 function

声明&用法

//数组:
var arr=[];//字面量
var arr=new Array();//构造函数
//对象:
var obj={};//字面量
var obj=new Object();//构造函数
//正则:
var regExp=/a/gi;//字面量
var regExp=new RegExp('a','gi');//构造函数 //用法一
var regExp=new RegExp('a','gi');
'abcdefgABCDEFGabcdefg'.replace(regExp,"~");
'~bcdefg~BCDEFG~bcdefg'
//用法二
'abcdefgABCDEFGabcdefg'.replace(/a/gi,"~");
'~bcdefg~BCDEFG~bcdefg'

global ignore 选项

//global用于所有字符串,而非在找到第一个匹配项时停止
//ignore 忽略大小写进行匹配
'abcdefgABCDEFGabcdefg'.replace(/b/,"~"); //"a~cdefgABCDEFGabcdefg"
'abcdefgABCDEFGabcdefg'.replace(/b/g,"~"); //"a~cdefgABCDEFGa~cdefg"
'abcdefgABCDEFGabcdefg'.replace(/b/i,"~"); //"a~cdefgABCDEFGabcdefg"
'abcdefgABCDEFGabcdefg'.replace(/b/gi,"~");//"a~cdefgA~CDEFGa~cdefg"

正则的懒惰 贪婪

//懒惰 

//贪婪

$ 字符的含义。

//$&匹配项的文本
'abcdefgABCDEFGabcdefg'.replace(/b/,"$&");
"abcdefgABCDEFGabcdefg"
'abcdefgABCDEFGabcdefg'.replace(/b/,"$&---");
'ab---cdefgABCDEFGabcdefg' //$`匹配项左侧的文本
'abcdefgABCDEFGabcdefg'.replace(/b/,"$`");
"aacdefgABCDEFGabcdefg" //$' 匹配项右侧的文本 (一直到右侧完,不会到下个匹配项就停止)
'abcdefgABCDEFGabcdefg'.replace(/b/,"$'");
"acdefgABCDEFGabcdefgcdefgABCDEFGabcdefg" 'abcdefgABCDEFGabcdefg'.replace(/b/g,"$'");
"acdefgABCDEFGabcdefgcdefgABCDEFGacdefgcdefg" //$$ $字符
'abcdefgABCDEFGabcdefg'.replace(/b/,"$$");
"a$cdefgABCDEFGabcdefg" //$n
$1 ..$99 一个正则中的分组,具体一个匹配项(全局可能多个匹配项)中的 第几组匹配到的东西。关于分组
分组:正则的 具体一个匹配项(全局可能多个匹配项)中的()个数,$1代表具体一个匹配项中的第一个()匹配的内容...
'abcdefgABCDEFGabcdefg'.replace(/(b)/,"$&---");
"ab---cdefgABCDEFGabcdefg"
'abcdefgABCDEFGabcdefg'.replace(/(b)/,"$1---");
"ab---cdefgABCDEFGabcdefg"
//$2没匹配到时,就把$2关键字当普通字符串
'abcdefgABCDEFGabcdefg'.replace(/(b)/,"$2");
"a$2cdefgABCDEFGabcdefg" //关于分组几个括号,几个分组。下面例子c虽然匹配,但不是$2
'abcdefgABCDEFGabcdefg'.replace(/(b)c/gi,'(#$1#$2)');
"a(#b#$2)defgA(#B#$2)DEFGa(#b#$2)defg"
'abcdefgABCDEFGabcdefg'.replace(/(b)(c)/gi,'(#$1#$2)');
"a(#b#c)defgA(#B#C)DEFGa(#b#c)defg" 'abcdefgABCDEFGabcdefg'.replace(/(b)(c)/,"$&---");
"abc---defgABCDEFGabcdefg"
'abcdefgABCDEFGabcdefg'.replace(/(b)(c)/,"$1---$2???");
"ab---c???defgABCDEFGabcdefg" 'abcdefgABCDEFGabcdefg'.replace(/(b)(c)/gi,"$&---");
"abc---defgABC---DEFGabc---defg"
'abcdefgABCDEFGabcdefg'.replace(/(b)(c)/gi,"$1--$2??");
"ab--c??defgAB--C??DEFGab--c??defg"

* +正则在函数match replace中的匹配次数 问题 ?

// + *的区别
'a-b-c'.match(/\w*/g)
["a", "", "b", "", "c", ""]
'a-b-c'.match(/\w+/g)
["a", "b", "c"]
//分组中* +组合
'abc12345'.match(/([^\d]*)(\d+)/g)
["abc12345"]
'abc12345'.match(/([^\d]*)(\d*)/g)
["abc12345", ""] reg = /[^/]+/;
'/ab'.match(reg)//["ab"]
reg = /([^/]+)/;
'/ab'.match(reg)//["ab","ab"]

replace(regExp,function(){})的使用

循环(匹配次数):regExp的匹配选项后

字符集[]中,不会出现两位数。

//[]中,不会出现两位数
//匹配18-65
var reg = /[18-65]/;//Invalid regular expression: /[18-65]/: Range out of order in character class
reg = /(18|19)|([2-5]\d)|(6[0-5])/;//我们拆成3部分来匹配 18-19 20-59 60-65
reg.test('50')//true
//匹配 8-12
reg = /[8-9]|(1[0-2])/;
reg.test('8')//true

字符集[]中,字符没有特殊含义 像\w \d这样的还是有特殊含义

//  '/'不需要\/
reg = /[^/]+/;
'/ab'.match(reg)//["ab"] // '.'代表'.'
reg = /./;
'b'.match(reg)//["b"]
reg = /[.]/;
'b'.match(reg)//null
reg = /[.]/;
'.'.match(reg)//["."] // '\d'代表0-9之间的任意一个数字
reg = /[\d]/;
'ssss'.match(reg)//null
reg = /[\d]/;
'\d'.match(reg)//null
reg = /[\d]/;
'12'.match(reg)//["1"]
reg = /[\d]/g;
'12'.match(reg)//["1","2"]

分组&分组中的捕获和非捕获

//分组内嵌套分组,从外到内依次赋值给$n引用
"ssass".match(/a((s)s)/,(...args)=>{console.log(args)})//"ass", "ss", "s"
"ssass".match(/a((s)s)/,(all,$1,$2)=>{console.log(all,$1,$2)})
//非捕获,不会将分组,赋值给$n引用,这里的(?:s)不会赋值给$2
"ssass".match(/a((?:s)s)/,(...args)=>{console.log(args)})//["ass", "ss", index: 2, input: "ssass"]
"ssass".match(/a((?:s)s)/,(all,$1,$2)=>{console.log(all,$1,$2)})//["ass", "ss", index: 2, input: "ssass"]

基础正则

============================================正则表达式基础知识==============================================
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。 \d : 0-9之间的任意一个数字 \d只占一个位置
\w : 数字,字母 ,下划线 0-9 a-z A-Z _
\s : 空格或者空白等
\D : 除了\d
\W : 除了\w
\S : 除了\s
. : 除了\n之外的任意一个字符
\ : 转义字符
| : 或者
() : 分组
\n : 匹配换行符
\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数
^ : 限定开始位置 => 本身不占位置
$ : 限定结束位置 => 本身不占位置
[a-z] : 任意字母 []中的表示任意一个都可以
[^a-z] : 非字母 []中^代表除了
[abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符

javascript:正则大全的更多相关文章

  1. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  2. JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)

    JavaScript资源大全中文版(Awesome最新版)   目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...

  3. JavaScript正则实战

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  4. 我也谈javascript正则匹配

    一.javascript 正则全局匹配 g 慎用test()方法 来个例子: var a = /^[a-z]+/gi; a.test('bb123'); //true a.lastIndex ; // ...

  5. javascript函数大全

    JavaScript函数大全 1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->( ...

  6. JavaScript正则式入门

    正则式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规 ...

  7. JavaScript 正则

    元字符 预定义类 边界 ^在中括号中时,匹配非hello的 str = 'hello world' str.match(/[^hello]/g) //[" ", "w&q ...

  8. javascript开源大全

    javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的 ...

  9. JavaScript正则中\1\2的作用

    一.示例 1. 验证6个相同的数字 var reg = new RegExp(/^(\d)\1{5}/g); var a = '333333'; if(reg.test(a)) { alert('ri ...

随机推荐

  1. Swift3.0语言教程分割字符串与截取字符串

    Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...

  2. [xsd学习]xsd介绍

    一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...

  3. 转 Delphi Invalidate的用法

    1.Invalidate介绍 void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效.窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口 ...

  4. POJ3084 Panic Room(最小割)

    把某点与某几点分开的最小花费,当然想到最小割.具体怎么建图,可以画个简单的情况,然后就清楚了: 0到1不受控制,建立0->1容量为INF的边: 1到0受在0一边的一个控制面板的控制,建立1-&g ...

  5. 【POJ3237】Tree 树链剖分+线段树

    [POJ3237]Tree Description You are given a tree with N nodes. The tree's nodes are numbered 1 through ...

  6. Node.js学习

    1. 下载 网址:https://nodejs.org/download/ 2. 添加express框架 如下图,运行Node.js command prompt 在命令行中输入:npm instal ...

  7. 移动端touch模块

    在自己写touch事件时,总是会出现各种各样的bug,正好发现zepto的touch模块,很好用,而且由于zepto和jquery语法的相似性,这个模块也可以直接引用到jquery中, 得花时间好好消 ...

  8. JavaScript基础学习篇

    1.alert消息弹出框 alert(字符串或变量); 消息对话框通常可以用于调试程序. 与document.write 相似. 2.确认:confirm消息对话框 confirm(弹出时要显示的文本 ...

  9. RSA_RSA算法原理(二)

    上一次,我介绍了一些数论知识. 有了这些知识,我们就可以看懂RSA算法.这是目前地球上最重要的加密算法. 六.密钥生成的步骤 我们通过一个例子,来理解RSA算法.假设爱丽丝要与鲍勃进行加密通信,她该怎 ...

  10. Linux任务调度命令(轻松管理Linux)

    Linux任务调度其实就是让系统在某个时间执行某些命令或者程序,这样可以让管理员更加轻松地管理自己的Linux,当我刚了解到这个方法时,我的内心充满了无尽的欣喜,感觉Linux实在是太强大了. 下面我 ...