RegExp类型,单体内置对象
1.RegExp类型:
1)什么是正则表达式:RegExp
--是一种规则,模式
--强大的字符串匹配工具
--创建:
--使用RegExp构造函数创建:var re=new RegExp('a','i');
--使用字面量创建:var re=/a/i; //i--ignore表示忽略大小写
2)正则表达式里面的字符:
1)修饰符
--i:执行对大小写不敏感的匹配。
--g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
--m:执行多行匹配
2)方括号
组成的表达式:
--[abk]:查找方括号之间的任何字符
--[^abk]:查找任何不在方括号之间的字符
--[abc]pc,o[ab]c
--[a-z],[0-9] (范围)
--[^a-z],[^a-z0-9] (排除,除了...之外的字符)
--o[^a-z0-9]pt (组合使用)
3)元字符:
\d: 表示数字 [0-9]
.(点):表示匹配任意字符 [.] 除了换行和行结束符
\w: 表示英文,数字,下划线 [a-z0-9_]
\s: 空白字符(包括空格,Tab,其他不可打印不可显示的字符)
\D: [^0-9]
\W: [^a-z0-9_]
\S: 非空白字符
\n:查找换行符
\r:查找回车符
例子:过滤HTML标签
var html='<p>我们都是好孩子</p><span>eneennene</span>';
var re=/<[^<>]+>/g; //表示html标签
html.replace(re,'');
4)量词:就是'个数'
常见的量词有:+,?,*
n+:匹配包含至少一个n的字符串
n?:匹配任何包含零个或一个n的字符串
n*:匹配任何包含零个或多个n的字符串(不推荐使用,会出现误导,通常用'+')
其他写法的量词:
{n}:表示正好出现8次
{n,m}:最少n次,最多m次 如:?(问号):也可表示为{0,1}
\d{8}:数字正好'连续'出现8次
{n,}:最少n次,最多不限,如:+(加号):也可表示为{1,}
^n:匹配任何以n开头的字符串
n$:匹配任何以n结尾的字符串
?=n:匹配任何其后紧接指定字符串n的字符串
var str="Is this all there is";
var patt1=/is(?= all)/g; //匹配is后面紧跟' all'的字符串
?!n:匹配任何其后没有紧接指定字符串n的字符串
正则匹配电话号码:[1-9]\d{7} (表示第一位只能是1-9,后面7位是任意数字)
正则匹配QQ号:[1-9]\d{5,9}
正则匹配固定电话:010-58975231/58975231 (前面的010可有可无)
--(0\d{2,3}-)?[1-9]\d{7}
(0\d{2,3}-)? ==>问号表示前面可有可无
--(0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
==>表示区号和分机号都是可有可无的
正则校验邮箱:邮箱的规则(可分为5部分):
1.一串英文,数字,下划线 (\w+)
2. @ (@)
3.一串英文/数字 ([a-z0-9]+)
4. . (\.)
5.一串英文 ([a-z]+)
var re=/\w+@[a-z0-9]+\.[a-z]+/i
if(re.test(oTxt.value)){
alert('邮箱合法');
}else{
alert('邮箱输入错误');
}
注:上面的re.test(str)是正则表达式的一个校验方法,检验这个字符串是否符合这个正则表达式
但是其有一个问题,re.test在校验时,只要字符串的一部分符合这个规则,即为正确,所以是有问题的
当^ 在[^xxx]里面时,表示除了....之外的意思,
当^不在方括号之内时 ^(字符串开头), $(字符串结尾)
//从字符串的开头到字符串的末尾的校验
var re=/^\w+@[a-z0-9]+\.[a-z]+$/i
if(re.test(oTxt.value)){
alert('邮箱合法');
}else{
alert('邮箱输入错误');
}
5)支持正则表达式的字符串操作方法
1.search:字符串搜索,返回搜索项在字符串中的索引位置
var str="bacde";
var re=/a/i;
str.search(re); //1
2.match:获取匹配的项
--/\d/: 表示数字,也可以为/[0-9]/
--全局匹配:g--global,/\d+/g:表示某个对象里的所有数字,不加g只找到第一个匹配数字
--量词: + (表示个数,意为'任意个'的意思)
--量词变化: \d,\d\d,和\d+
var str='12abc v-199bh';
var re=/\d/g;
str.match(re); //1,2,1,9,9
var re=/\d+/g;
str.match(re); //12,199 这时才正常
3.replace:替换所有匹配项目
--返回替换后的字符串
var str="123 dfr -bh";
var re=/\ +/g;
str.replace(re,'');
var str1="百度公司自创立以来,我们都是好朋友,123456";
var re=/百度|我们/;
str1.replace=(re,'***');
6)关于转义正则表达式中的元字符
正则表达式中的元字符包括:( [ { \ ^ $ | ? * + . } ] )
这些元字符在正则表达式中都有一定的意义,因此如果想要匹配字符串中包含的这些元字符,就不许对它进行转义
1.匹配第一个'bat'或'cat',不区分大小写: var reg=/[bc]at/i;
2.匹配第一个"[bc]at"或,不区分大小写: var reg=/\[bc\]at/i;(通过\转义)
3.匹配所有以'at'结尾的3个字符的组合,不区分大小写: var reg=/.at/ig;
4.匹配所有'.at',不区分大小写: var reg=/\.at/ig;
2.单体内置对象:Global对象,Math对象
1)Global对象(全局对象):JS中这个对象是抽象的,不属于任何其他对象的属性和方法,都属于它的属性和方法
1)常见的全局函数:(Global对象的方法)
--isNaN():检查某个值是否是数字
--isFinite():检查某个值是否为有穷大的数
--parseInt(string):解析一个字符串并返回一个整数,从左到右查看字符串,当碰到非数字就返回去
parseInt('12px23')--12 parseInt('abc')---NaN
--parseFloat(string):解析一个字符串并返回一个浮点数
(都用parseFloat也可以,整数字符串在parseFloat之后还是整数)
2)其他方法:
1.URL编码方法:(因为有效的URL不应该含有特殊字符,例如空格等,需要通过编码才能够让浏览器理解和接受)
--encodeURI():把字符串编码为URI,不会对本身属于URL的特殊字符进行编码,如冒号,正斜杠,问号,和#号
--decodeURI():只能对经encodeURI()编码的字符进行解码
--encodeURIComponent():也是编码无效的URL字符串,会对它发现的任何非标准字符进行编码
--decodeURIComponent():只能对经encodeURIComponent()编码的字符进行解码
document.write(encodeURI("http://www.w3school.com.cn"));
--http://www.w3school.com.cn
document.write(encodeURIComponent("http://www.w3school.com.cn"));
--http%3A%2F%2Fwww.w3school.com.cn
2.eval()方法:是一个完整的ES解析器,它只接受一个参数,即要执行的JS字符串,并执行其中的的JS代码
eval("alert(hi)"); 等价于 alert('hi');
var msg="hello,js";
eval("alert(msg)"); //hello,js
eval("x=10;y=20;document.write(x*y)");
document.write(eval("2+2"));
2)Math对象:不需要经过实例化(new)的对象,直接可以使用==>Math.ceil();
Math对象属性:
--Math.E:自然对数的底数,算术常量 e
--Math.PI:返回圆周率
--Math.LN2:返回2的自然对数
--Math.LN10:返回10的自然对数
--Math.LOG2E:返回以2为底的 e 的对数
--Math.LOG10E:返回以10为底的 e 的对数
Math对象方法:
--Math.abs(x):返回数的绝对值
--Math.max(x,y):返回x和y中的最大值。
--Math.min(x,y):返回x和y中的最小值。
--Math.ceil(val):向上取整
--Math.floor(val):向下取整
--Math.round(val):取近似值,四舍五入
--Math.sqrt(x):返回数的平方根
--Math.pow(x,y):返回x的y次幂
--Math.random():返回大于等于0小于1的随机数
可以从整数范围内随机选择一个值:值=Math.floor(Math.random()*可能的总数+第一个可能的值)
例:选择2-10之间的随机数:var num=Math.floor(Math.random()*9+2);
RegExp类型,单体内置对象的更多相关文章
- js之数据类型(对象类型——单体内置对象——Math)
Math是一个内置对象,它具有数学常数和函数的属性和方法.Math对象用于执行数学任务,和其它对象不同,Math只是一个静态对象并没有Math()构造函数,实际上,Math()只是一个由js设置的对象 ...
- js之数据类型(对象类型——单体内置对象——JSON)
JSON(Java Script Object Notation)使用JavaScript语法,是用于存储和传输数据的格式,通常用于服务端向网页传递数据.JSON格式仅仅是一个文本,文本可以被任何编程 ...
- JavaScript高级编程———基本包装类型String和单体内置对象Math
JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...
- DOM笔记(九):引用类型、基本包装类型和单体内置对象
一.Array 1 .创建数组的方式 //Array构造函数(可以去掉new) var colors0 = new Array(); var colors1 = new Array(20); var ...
- 《JavaScript 闯关记》之单体内置对象
ECMA-262 对内置对象的定义是「由 JavaScript 实现提供的.不依赖于宿主环境的对象,这些对象在 JavaScript 程序执行之前就已经存在了」.意思就是说,开发人员不必显式地实例化内 ...
- Javascript高级编程学习笔记(18)—— 引用类型(7)单体内置对象
什么是内置对象呢? js高级程序设计中给出的定义为:由ES规定不依赖于宿主环境的对象,这些对象在JS执行前就已经存在 前面我们介绍的引用类型都是内置对象 除了这些对象外ECMA还规定了两个单体内置对象 ...
- javascript学习笔记 - 引用类型 单体内置对象
七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码 encodeURI <=>deco ...
- js单体内置对象
js单体内置对象:js的内置对象,是ECMAScritp提供的.不依赖于宿主环境的对象,我的理解就是在我们开发之前js里面就已经存在的对象.单体内置对象就是是不需要通过new来实例化的,例如我们的st ...
- 单体内置对象——Global对象
单体内置对象的定义:由ECMAScript实现提供的.不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前已经存在了.意思就是说:开发人员不必显式地实例化内置对象,因为他们已经实例化了. ...
随机推荐
- asp.net 获取当前项目的根目录路径
获取网站根目录的方法有几种如: Server.MapPath(Request.ServerVariables["PATH_INFO"]) Server.MapPath(" ...
- spring security使用数据库管理用户权限
<authentication-provider> <user-service> <user name="admin" password=" ...
- DBA日常工作内容和职责
1.统计数据库总容量 按表空间分别统计: 总容量(单位为M): 2.计算用户下所有对象大小 3计算USERS表空间的大小 4计算该USERS表空间对象大小 ---------------------- ...
- Java开发搜索引擎爬虫
package com.peidon.html; import java.io.BufferedReader; import java.io.File; import java.io.FileOutp ...
- SpringMvc简单实例
Spring MVC应用一般包括4个步骤: (1)配置web.xml,指定业务层对应的spring配置文件,定义DispatcherServlet; (2)编写处理请求的控制器 (3)编写视图对象,例 ...
- Android课程---寄存器与存储器的区别
存储器在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右.内存和寄存器就是为了解决存储器读写速度慢而产生的 ...
- Java程序设计 实验三
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指 ...
- Session 知识点再整理(一)基本概念和原理
Session 的概念 Session 和 Cookie 一样,也是针对 HTTP 的局限性而提出的一种保持客户端和服务器端会话连接状态的机制. Session 被称为会话,指用户在进入网站到浏览器关 ...
- 通过php获取用户微信openid
// 基于CI框架 // 访问开始页面 public function url() { // wxAction/oauth2 微信回调地址:微信传入code值,通过该code在wxAction/oau ...
- mvc3升级mvc4的方法记录.
手工升级ASP.NET MVC 3项目: 一.安装ASP.NET MVC 4 二.升级ASP.NET MVC版本配置信息: 1:替换项目 Web.config 中的 System.Web.Mvc, V ...