1. String: 由多个字符组成的字符只读数组

vs 数组: 相同: 1. 下标, 2. .length, 3. 遍历, 4. .slice

不同: 类型不同!  API不通用

API: 所有字符串API,都无权修改原字符串,只能返回新字符串

大小写转换: 将字符串中的字母统一转为大写/小写

何时: 不区分大小写时

如何: str.toUpperCase() 转大写

str.toLowerCase() 转小写

说明: sql语句默认不区分大小写

如果希望密码区分大小写: binary upwd=$upwd

获取指定位置的字符:

str[i]  str.charAt(i)

获取指定位置字符的unicode号

var unicode=str.charCodeAt(i)

将unicode号变回字:

var char=String.fromCharCode(unicode)

选取子字符串:

str.slice(starti,endi+1) 含头不含尾

.slice(starti,-n) 到倒数第n个之前

=> .slice(starti, str.length-n)

.slice(starti) 选取到结尾

.slice()  选取全部

.slice(starti,starti+n) 选择n个

str.substring(starti, endi+1) 用法同slice

问题: 不支持负数参数

str.substr(starti,n) 选择n个

查找关键词: 4种:

1. 查找一种固定的关键词出现的位置:

var i=str.indexOf("关键词",fromi);

在str中,从fromi位置开始,找下一个"关键词"出现的位置

返回值: 第一个关键词的位置

如果找不到,返回-1

var i=str.lastIndexOf("关键词");

查找str中"关键词"最后一次出现的位置

问题: 关键词可能发生变化

解决: 用正则查找关键词:

2. 判断是否包含关键词:

var i=str.search(/正则表达式/)

查找str中第一个符合正则表达式规则的关键词的位置

返回值: 关键词的位置

如果没找到,返回-1

问题: 所有正则,默认区分大小写的

解决: 在第二个/后加i,  ignore

问题: 无法获得关键词的内容

3. 获得关键词的内容:

1. 只获得第一个关键词的内容:

var arr=str.match(/正则表达式/i);

查找str中第一个符合正则表达式要求的关键词的位置和内容

返回值: [ 0: 关键词,  index: 位置]

如果没找到返回null

2. 获得所有关键词的内容:

var arr=str.match(/正则表达式/ig);

其中g: global

返回所有关键词组成的数组

问题: 只能获得内容,无法获得每个关键词的位置:

4. 即查找每个关键词的内容,又查找每个关键词的位置:

替换: 2种:

1. 简单替换:将所有敏感词,替换为统一的值

str=str.replace(/正则表达式/ig, "替换值");

2. 高级替换:根据每个敏感词的不同,动态选择不同的替换值

str=str.replace(/正则表达式/ig, function(kw){

//kw: 可自动获得本次找到的一个关键词

return 根据kw的不同,动态选择不同返回值

});

原理: 回调函数function()会自动在每个找到的关键词上调用一次。调用时,参数kw会自动接住当前关键词。return返回的新值,会被替换到关键词所在位置。

衍生操作: 删除: 替换为空字符串

str=str.replace(/正则/ig,"")

切割:

2. 正则表达式:

什么是: 规定一个字符串中字符出现规律的规则

何时: 2种:

1. 用一套规则,模糊匹配多种敏感词

2. 用规则验证字符串是否符合格式要求

如何:

1. 最简单的规则: 就是关键词本身

2. 字符集:

什么是: 一位字符上所有备选字符的列表

何时: 如果一位字符上,有多种备选字时

如何: [备选字符列表]

强调: 一个字符集,只能匹配一位字符

简写: 如果字符集中部分字符是连续的,可用-省略中间字符:  比如:

1位数字: [0-9]

1位小写字母: [a-z]

1位大写字母: [A-Z]

1位字母: [A-Za-z]

1位字母或数字: [0-9A-Za-z]

1位汉字: [\u4e00-\u9fa5]

除了: [^47]

3. 预定义字符集:

\d 一位数字: [0-9]

\w 一位字母,数字或下划线: [0-9A-Za-z_]

\s  一位空字符: 空格, Tab, ...

.   通配符

问题: 无法灵活规定字符集出现的次数

4. 量词:

什么是: 规定一位字符出现次数的规则

何时: 只要灵活定义一位字符出现的次数时

如何: 量词紧跟在一个字符集之后,默认修饰相邻的前一个字符集的个数

2大类:

1. 有明确数量边界的

{n,m} 至少n个,最多m个

{n,}  至少n个,多了不限

{n}   必须n个

2. 没有明确数量边界

* 可有可无,多了不限

? 可有可无,最多一个

+ 至少一个,多了不限

5. 选择和分组:

1. 选择: 或   |

什么是: 在多组逻辑之间,任选其一匹配即可

何时: 只要在在多组逻辑之间,任选其一匹配

2. 分组: ( )

什么是: 将多个逻辑包裹为一组

问题: 默认,一个量词只能修饰相邻的一个字符集

何时: 如果希望一个量词可以同时修饰多个字符集时

身份证号:

15位数字  2位数字 一位数字或X

后三位整体可有可无,最多1次

\d{15}(\d{2}[0-9X])?

手机号:

+86 或 0086  可有可无,最多1次

空字符       可有可无,多了不限

1

3~8

9位数字

(\+86|0086)?\s*1[3-8]\d{9}

?/+

6. 指定匹配位置:

^ 字符串开头

$ 字符串结尾

何时: 只要匹配开头的或结尾的内容时

比如: ^\s+ 开头的空字符

\s+$ 结尾的空字符

^\s+|\s+$ 开头或结尾的空字符

\b单词边界: 空格,标点,开头,结尾,。。。

比如: 每个单词首字符: \b[a-z]

一个单词no  \bno\b

JS高级-String-正则表达式:的更多相关文章

  1. JS高级---识别正则表达式是否匹配

    识别正则表达式是否匹配 console.log(/[a-zA-Z]+/.test("hello")); console.log(/./.test("除了回车换行以为的任意 ...

  2. JS高级---创建正则表达式对象

    创建正则表达式对象 两种: 1.通过构造函数创建对象 2.字面量的方式创建对象   正则表达式的作用: 匹配字符串的   //对象创建完毕--- var reg = new RegExp(/\d{5} ...

  3. 读JS高级——第五章-引用类型 _记录

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  5. js复习---string

    对js的string的方法复习: 1.charCodeAt()  返回一个整数,代表指定位置字符串的unicode编码. strObj.charCodeAt(index) index 是处理字符的从零 ...

  6. JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象

    JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义      查找以八进制数 规定的字符.     查找以十六进制数 规定 ...

  7. JS删除String里某个字符的方法

    关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. 1 2 3 4 var str = " ...

  8. Ext.js高级组件

    第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...

  9. JS高级前端开发群加群说明及如何晋级

    JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明:   一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这 ...

  10. js实现String.Fomat

    引言 拼接字符串用习惯了C#的String.Format.今天看别人的代码在js中也封装了一个js的String.Format,用来拼接字符串和DOM. js实现和调用String.Format St ...

随机推荐

  1. Bar-Code-Recognition-System Private

    本设计研究EAN13条形码识别的译码技术,在基于机器视觉技术上,构建了一套条形码在线检测识别系统,系统将由以下几个部分构成:条形码图像定位与采集.计算机图像预处理.条形码图像中值滤波去噪.条码解析与识 ...

  2. 100-days: Three

    Title: Singapore(新加坡) set to raise retirement ages as seniors stay healthier be set to do sth.  准备做某 ...

  3. 转)VCSA 6.5重启无法访问,报错“503 Service Unavailable”的解决方法

    1. 问题 重启vcenter,登陆vsphere client,提示 “503 Service Unavailable (Failed to connect to endpoint: [N7Vmac ...

  4. vue 添加子路由,并对路由重定向

    // 用户信息首页 { path: '/user/index', name: 'userIndex', component: userIndex, redirect: '/user/index/sho ...

  5. TZOJ 1594 Optimal Milking(二分+最大流)

    描述 FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 ...

  6. war包内更新文件

    感谢@这个博客提供的分享 亲测有效,原文: 1.如果要替换的文件直接在war包的根目录(一级目录)下,直接使用jar uvf命令替换即可 如:替换a.war中b.xml文件 jar uvf a.war ...

  7. js文字展示各种滚动效果

    js文字展示各种滚动效果:http://www.dowebok.com/demo/188/

  8. how2j网站前端项目——天猫前端(第一次)学习笔记5

    收拾好心情,现在开始学习第5个页面——购物车页面! 一.结算按钮 这个还是比较简单的,我自己看着站长的样子模仿了一个: 有个地方不会做,就是全选前面的复选框,站长的框里面是白色的,我搞不来. 二.订单 ...

  9. 46-wxpython 4 使用 grid 展示表格

    转载:https://blog.csdn.net/soslinken/article/details/79024938#%E4%BD%BF%E7%94%A8%E6%A0%B7%E4%BE%8B wxp ...

  10. Vue 安装脚手架 工具 vue-cli (最新)

    假如您安装过旧版脚手架工具(vue-cli),您可以通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli卸载. Vue CLI 需要Node ...