JS引用类型之——RegExp】的更多相关文章

前言 之前小猪分享过关于正则表达式的一些内容,具体请看传送门,今天小猪来分享怎么在js中使用正则表达式. 定义 ECMAScript通过RegExp类型来支持正则表达式.使用下面类似Perl的语法,就可以创建一个正则表达式. var expression = |pattern |flags; 其中的模式(pattern)部分可以是任何简单或复制的正则表达式,可以包含字符串.限定符.分组.向前查找以及反向引用.每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的行为. RegEx…
<script> var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);// --> undefined console.log(b.x);// --> [object Object] </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了——“a.x不是指向对象a了么?为啥log(a.x)是undefined?”.“b.x不是应该跟a.x是一样的么?为啥log出来居然有2个对象”…
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的. 所以我们判断一个字符串是否是合法的Email的方法是: 创建一个匹配Email的正则表达式: 用该正则…
object类型: js中大多数引用类型都是Object类型的实例.创建object实例有两种方法:第一种是使用new操作符后跟Object构造函数. var obj = new Object();obj.name = 'long'; 第二种是对象字面量. var obj = { name:'long', 'la la':111 }; 访问对象属性,一般优先使用 '.' 操作符,在属性名是变量或者属性名不符合ECMAScript标识符规范时,可以用 '[ ]'访问,如果不是变量需要给属性名加上引…
一.摘要: <javascript高级程序设计第三版>一书中单独有一章对js的引用类型(Object.Array.RegExp.Function:基本包装类型:Boolean.Number.String:单体内置对象:Global.Math)做了详细的介绍,这里不会详细的总结各种引用类型的使用方法,主要是总结引用类型中toString().valueof().toLocalString()方法的使用. 二.总结: <javascript高级程序设计第三版>中对js中的object类…
JS中引用类型使用等号“=” 赋值,相当于把原来对象的地址拷贝一份给新的对象,这样原来旧的对象与新的对象就指向同一个地址,改变其中一个对象就会影响另外那个对象,也就是所谓的浅拷贝.例如: var arr = ["One","Two","Three"]; var arrto = arr; arrto[1] = "test"; document.writeln("数组的原始值:" + arr + "&…
前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值 要说明的…
前言 Js数组去重已经有很多种实现方式:包括逐个检索对比(使用Array.property.indexOf),先排序后对比,使用hash表,利用ES6中的Set()等.这些数组去重办法中速度最快的是hash表,最安全也最慢的是逐个检索对比(先排序后对比是优化成先分组再逐个检索),而ES6的Set对象目前浏览器兼容不全. 有没有结合那些以上方式的优点,像hash表一样快,和Array.property.indexOf一样全,又没有兼容问题的解决方案呢? 有! Js中的基本类型 Undefined,…
js中的数据类型有以下几种: 基本类型:Number Boolean  String  undefined null  Symbol 引用类型:Object(Array, Function, Date,正则对象,json对象) 基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的 复制变量值 基本类型: var p = 1; var p1 = p; 执行结果: 也就是说,基本类型的复制就是在栈内存中开辟出了一个新的存储区域用来存储新的变量,这个变量有它自己的值,只不过和前面的值一…
1,平常我们写js正则规则的时候,一般是这样写: var reg = /abc/; 然而,这样写的话,如果abc是一个变量这样就不行,我们需要下面这种写法: var abc = "汉字";var reg = new RegExp(abc, 'g');//g 全局匹配 2, 搜索关键字,让关键字标红: // class='text' :这个类中的文字 $('.text').each(function () {// 关键字标红 var reg = new RegExp($sea, 'g')…
js & replaceAll https://caniuse.com/#search=replaceAll https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @created 20…
引用类型的深拷贝.浅拷贝在前端领域一直是个很重要的知识点,不仅在业务中频繁使用,也是面试官们喜欢考的的知识点之一.本篇将封装引用类型的深拷贝.浅拷贝方法,并解决在封装过程中出现的问题. 一.浅拷贝 浅拷贝一般比较简单,缺点也很明显,引用类型的属性并不是真正的拷贝,而是拷贝的引用地址,改变一个当中的属性值,另一个也跟着变化. 方法封装: /** * 浅拷贝 * @param {*} target * @returns */ export function clone (target) { if (…
看到别人提的一个问题,说为什么,他们是fasle 然后自己也测试了一番觉得应该是这样的, var a=[1,2,3,4]; var b=a; var c=[1,2,3,4]; if(a==b){ alert true; //true }else{ alert false; } if(a==c){ alert true; }else{ alert false; //false } a是引用类型,指向一块内存,var b=a,相当于b也指向a的那块内存,两个对象相比较,比较的是是不是同一个对象,也就…
ECMAScript中使用RegExp来支持正则表达式.使用下面类似Perl的语法,就可以创建一个正则表达式. var expression=/pattern/flags; 如上代码: pattern   ---pattern部分可以是任何简单或复杂的正则表达式,可以包含字符类.限定符.分组.向前查找以及反向引用. falgs       ---每个正则表达式都可带有一个或多个标志(flags),用于标明正则表达式的行为; 以下是正则表达式的匹配模式所支持的3个标志: g : 表示全局模式,即模…
JavaScript提供了一个RegExp对象来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp实例.有两种方式可以创建RegExp对象的实例. 使用RegExp的显式构造函数,语法为:new RegExp("pattern"[,"flags"]). ~~~构造函数 new RegExp(..) 使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]. ~~~正则字面量 pattern部分为要使用的正则表达式模式文本…
a,b都是引用类型,它们实际上指向同一个内存空间,同呼吸共命运…
引用类型定义: 描述一类对象具有的属性和方法 引用类型Object ,也就是我们常说的对象类型了,这应该是JavaScript中最常见的引用类型了. 对象是某个引用类型的实例,如何创建一个实例,也就是创建一个对象 (1) var person = new Object() 这种就创建了一个对象 通过new + 构造函数形式 ,创建一个Object实例赋给person (2)一种是字面量对象方法,也就是直接初始化 var p = { name: 'bob', age: 18 } var p = {…
RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 正则表达式的创建方式 1.文字格式,使用方法如下: /pattern/flags  (即:/模式/标记) 2.RegExp构造函数,使用方法如下: new RegExp("pattern"[,"flags"])  (即:new RegExp("模式"[,"标记"])) 参数说明 pattern (模式):表示正则表达式的文本,也可以是正…
在开发中,有时候需要将数组或者对象的值赋予其他另一个变量,但是两个变量之间会相互影响,因为在将引用类型的值赋给其他变量时,赋予的其实是内存中的存储地址 var arr = [1,2,3,4,5] var arr1 = arr // 赋值时传递的是存储空间的地址 console.log(arr === arr1) // true arr1.push(6) // 当arr1改变时.arr也会改变 console.log(arr) // [1,2,3,4,5,6] // 当我们需要单独两个互不影响的变…
10.流程控制语句      注:var obj = {}:这里的obj转换boolean语句为true   if语句和java是一样的,判断条件也是根据上篇博客提到的假性值 // 弹出一个带输入框的窗口 var value = prompt("请输入..."); //输入1 if(value=="1"){ alert("true"); //弹框 var inner = 1; } else{ alert("flase"); v…
栈 1)var a=new Array(),a.push(a,b,...),a.pop() queue 1)var a=new Array(), a.push(a,b,...),a.shift() a.unshift(a,b....),a.pop()反向队列 数组方法 1)由于按照string排序var a=[3,1,2,6,5,11];//1,11,2,3,4,5,6 像c++一样加个控制函数a.sort(function)  写a-b简单方法 2)倒转reverse 3)连接,c=a.con…
一.匹配中文,英文字母和数字及_: const reg = /^[\u4e00-\u9fa5\w]+$/; const str1 = 'shangyy'; const str2 = '尚悦悦ww123' console.log(reg.test(str1)) // true console.log(reg.test(str2)) // true 二.贪婪匹配和惰性匹配 标识符 +,?,*,{n},{n,},{n,m} 匹配时,如果遇到上述标识符,代表是贪婪匹配,会尽可能多的去匹配内容 // 贪婪…
ECMAScript中的数组可以说是比较神奇了, ECMAScript中定义的数组每一项可以保存不同的数据类型,如第一项为字符串,第二项为数值等等 1. 那怎么创建一个数组呢? 方法和创建对象实例类似 (1)通过new + 构造函数创建.此处的构造函数就是Array了 即 var arr = new Array() 也可以传递参数 var arr = new Array(20) 则数组长度为20 或者传递字符串 var arr = new Array('a','b')此处创建了包含2个字符串值的…
实战,参数可以对照上面的,代码一定要敲 var str = 'abc123cba456aaa789'; var reg = /\d+/g; console.log(reg.test(str)) //str满足匹配表达式返回true str2 = 'asdsadasd' console.log(reg.test(str2)) //str2不满足匹配表达式返回flase console.log(reg.exec(str)) //返回数组['123','input':'abc123cba456aaa7…
1.RegExp 简介 RegExp 即正则表达式(Regular Expression,在代码中常简写为 regex.regexp或RE/re/reg),就是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模式,搜索模式可用于文本搜索和文本替换. 正则表达式是由一个字符序列形成的搜索模式,当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容,也就是说正则表达式是描述字符模式的对象,可用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. 所谓正则表达式,直接可理…
正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的. 所以我们判断一个字符串是否是合法的Email的方法是: 创建一个匹配Email的正则表达式: 用该正则表达式去匹配用户的输入来判断是否合法. 在正则表达式中,如果直接给出字符,就是精确匹配.用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以: '00\d'可以匹配'007',但无法匹配'00A': '\d\d\d'…
在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式.无论是那种定义正则表达式的方式,它们都会返回RegExp对象. 普通方式定义正则表达式的格式 语法: var 变量名 = /正则表达式/附加参数 1 附加参数是用来扩展表达式含义的,目前有三种附加参数.分别是: g:表达式进行全局匹配i:匹配时不区分英文的大小写m:可以进行多行匹配 其中全局匹配(g)是指,匹配字符串时,直到所有字符串全部查找完成才会停止匹配. 而非全局匹配是指,匹配字符串时,有一处匹配成功或…
如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,byte,float,double,boolean,char)在栈区分配空间,所有的对象都在堆(Heap)中分配空间.按照这思路来谈下JavaScript. 最新的 ECMAScript 标准定义了 7 种数据类型: 6 种原始类型-基本数据类型(按值访问) Null (js中的数据在底层是以二进制存储,如果前三…
1.正则表达式(Regular Expression) 在JS里是RegExp 两种字义方式 1. var patt1=new RegExp("e"); 2. var patt1 = /e/; RegExp 对象有 3 个方法:test().exec() 以及 compile(). 例如 /\d/.test('123'); //true /\w+/.exec('abc'); //abc compile少见 string 有四个方法search,march,replace, split…
js有一个东西叫做GC(garbage collection )垃圾回收机制;js中有两种类型:js基本数据类型,js引用类型; 当一个函数[对象]--引用类型被引用后,过后,出了它的功能之后,gc会将其马上回收,以免占用.仅且仅有引用类型会 产生闭包.如果一个函数的应用结束了,心里想:我总算可以离开内存(公司)了,就走了,但是有的时候啊,别的函数会引用到他内部 的变量,就如同公司需要他的脑力,但是不需要容貌,没办法,他还是只能够留下来在内存中(公司),所以没有回收,所以驻留!如下面的实例和解释…