JS高级-String-正则表达式:
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-正则表达式:的更多相关文章
- JS高级---识别正则表达式是否匹配
识别正则表达式是否匹配 console.log(/[a-zA-Z]+/.test("hello")); console.log(/./.test("除了回车换行以为的任意 ...
- JS高级---创建正则表达式对象
创建正则表达式对象 两种: 1.通过构造函数创建对象 2.字面量的方式创建对象 正则表达式的作用: 匹配字符串的 //对象创建完毕--- var reg = new RegExp(/\d{5} ...
- 读JS高级——第五章-引用类型 _记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...
- js复习---string
对js的string的方法复习: 1.charCodeAt() 返回一个整数,代表指定位置字符串的unicode编码. strObj.charCodeAt(index) index 是处理字符的从零 ...
- JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象
JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义 查找以八进制数 规定的字符. 查找以十六进制数 规定 ...
- JS删除String里某个字符的方法
关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. 1 2 3 4 var str = " ...
- Ext.js高级组件
第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...
- JS高级前端开发群加群说明及如何晋级
JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这 ...
- js实现String.Fomat
引言 拼接字符串用习惯了C#的String.Format.今天看别人的代码在js中也封装了一个js的String.Format,用来拼接字符串和DOM. js实现和调用String.Format St ...
随机推荐
- 全国绿色计算大赛 模拟赛第一阶段(C++)第1关:求和
挑战任务 这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 15,19 则 他们的数位和应该为:1+5+1+6+1+7+1+8+1+9, ...
- Wasserstein距离
https://blog.csdn.net/leviopku/article/details/81388306 https://blog.csdn.net/nockinonheavensdoor/ar ...
- 贪吃蛇Global Java实现(二)
package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...
- e-olymp Problem4196 Chocolate bars
吐槽一下,这个OJ的题目真的是阅读理解题.代码非常短,就是题目难理解.心累. 传送门:点我 Chocolate bars It is hard to overestimate the role of ...
- ActiveMQ之java Api
ActiveMQ 安全机制 activemq的web管理界面:http://127.0.0.1:8161/admin activemq管控台使用jetty部署,所以需要修改密码则需要修改相应的配置文件 ...
- php cli命令 自定义参数传递
所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件.这个可执行文件可以被用来运行命令行的PHP程序.要在你的系统上找到这个可执行文件,就要遵照下面的步 ...
- jsp页面\n换行替换
1,js替换 var text= $(this).text(); var reg = new RegExp("\\n","g");//g,表示全部替换. tex ...
- ubuntu系统ssh遇到port 22:No route to host问题
ssh遇到这个port 22:No route to host这个问题 检查防火墙状态 (iptables -L) 检查ssh状态 (ps -elf |grep ssh) 检查网络状态(换根网线)
- Spring配置文件XML详解
1.bean的基本属性配置: <!-- id是bean的标识符,必须唯一,如果没有配置id,name默认为标识符 如果配置了id,有配置了name,那么name为别名 name可以设置多个别名, ...
- java的几个日志框架log4j、logback、common-logging
开发工作中每个系统都需要记录日志,常见的日志工具有log4j(用的最多),slf4j,commons-loging,以及最近比较流行的logback 以前只是在项目中用log4j,更多的是参考下配置文 ...