JavaScript学习-字符串操作(正则表达式)

文章目录

  • 一、基本含义——正则表达式
    • 1.1 名称
    • 1.2 含义
    • 1.3 作用
    • 1.4 修饰符
    • 1.5 元字符
      • 1.5.1 文字
      • 1.5.2 字符
      • 1.5.3 混合
    • 1.6 量词
    • 1.7 小括号——()
    • 1.8 中括号——[]
  • 二、创建——正则表达式
    • 2.1 直接量创建法
    • 2.2 对象创建法
  • 三、属性——正则表达式
    • 3.1 global
    • 3.2 ignoreCase
    • 3.3 multiline
    • 3.4 lastIndex
    • 3.5 source
  • 四、方法——正则表达式
    • 4.1 compile
    • 4.2 exec
    • 4.3 test
  • 五、替换字符串——replace
  • 六、删除字符串——replace
  • 七、查找字符串——search
  • 八、查找字符串——match

一、基本含义——正则表达式

1.1 名称

全称:正则表达式(regular expression)。简称:RegExp。

1.2 含义

一种模式,匹配符合表达式限制的字符串。
示例:寻找超链接。

// 待查询的字符串str。
var str = " 百度";
// 查询方法;直接量创建法——searchMethod1
var searchMethod1 = /^.*<\/a>$/ig;
// 查询方法;对象创建法——searchMethod2
var searchMethod2 = new RegExp("/^.*<\/a>$/", "ig");
// 取用
searchMethod1.test(str);

1.3 作用

处理判断获取替换删除增加较为复杂字符串

1.4 修饰符

修饰符 含义 用法
i 忽略大小写查询 /正则表达式/i
g 全局查询所有(找到所有符合要求的字符) /正则表达式/g
m 多行查找 /正则表达式/m

1.5 元字符

1.5.1 文字

word(单词)、digit(数字)

元字符 含义 用法
\w 单词字符 /\w/g 全局查找包含单词的字符串
\W 非单词字符 /\W/g 全局查找包含非单词的字符串
\d 数字 /\d/g 全局查找数字的字符串
\D 数字 /\D/g 全局查找非数字的字符串
\b 单词边界 /\b/g 全局匹配单词边界
\B 非单词边界 /\B/g 全局非单词边界

1.5.2 字符

space(空白)

元字符 含义 用法
\s 空白 /\s/g 全局查找空白的字符串
\S 非空白 /\S/g 全局查找非空白的字符串
\n 换行符 /\n/g 全局查找换行符
\f 换页符 /\f/g 全局查找换页符
\r 回车符 /\r/g 全局查找回车符
\t 制表符 /\t/g 全局查找制表符
\v 垂直制表符 /\v/g 全局查找垂直制表符

1.5.3 混合

元字符 含义 用法
. 任何字符(除了换行符) /h.t/g 全局查找以h开头,t结尾的字符串

1.6 量词

量词 含义 用法
x+ 至少一个 x
x* 0个x或者多个x。
x? 至多一个x。
x{m} m个x。
x{m,n} m-n个x。
x{m,} 至少m个x。
x$ 以x结尾。
^x 以x开头。
?=x 后接x的字符串。
?!x 后不接x的字符串。

1.7 小括号——()

作用:确定优先级。
或者——|。作用:选择。

1.8 中括号——[]

作用:确定范围。闭区间内查找,只要符合中括号内要求即可。

量词 含义 用法
[xxxx] 中括号内任何字符
[^xxxx] 不在方括号内的字符
[0-9] 0 - 9 数字
[a-z] a - z 字母
[A-Z] A - Z 字母
[A-z] A - z 字母。
[a-zA-Z0-9] 数字或字母

二、创建——正则表达式

2.1 直接量创建法

语法:/pattern/attributes

var str = "abghtjbfjjbv";
var pattStr = /t/i;
	// 特殊含义的字符不需要转义
	document.write(pattStr);
	// 结果为:t

2.2 对象创建法

语法:var 正则对象名 = new RegExp(pattern, attributes)

var str = "abghtjbfjjbv";
var pattStr = new RegExp("t","i");
	// 可字符串拼接。
	document.write(pattStr);
	// 结果为:t

三、属性——正则表达式

3.1 global

var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","i");
var	p1 = pattStr1.global;
var	pattStr2 = new RegExp("t","g");
var	p2 = pattStr2.global;
var	pattStr3 = new RegExp("t");
var	p3 = pattStr3.global;
	document.write(p1,p2,p3);
	// 结果为:false,ture,false

3.2 ignoreCase

var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","i");
var	p1 = pattStr1.global;
var	pattStr2 = new RegExp("t","g");
var	p2 = pattStr2.global;
var	pattStr3 = new RegExp("t");
var	p3 = pattStr3.global;
	document.write(p1,p2,p3);
	// 结果为:ture,false,false

3.3 multiline

var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","m");
var	p1 = pattStr1.global;
var	pattStr2 = new RegExp("t","g");
var	p2 = pattStr2.global;
var	pattStr3 = new RegExp("t");
var	p3 = pattStr3.global;
	document.write(p1,p2,p3);
	// 结果为:ture,false,false

3.4 lastIndex

作用:获取RegExp对象的查找字符的位置。
注意:使用该属性时,修饰符中必须包含g。

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
	pattStr2.test(str);
var	p2 = pattStr2.global;
	document.write(p2);
	// 结果为:6。注意该处位置起始值为1。

3.5 source

作用:获取RegExp对象的原字符串。

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
	document.write(pattStr2.source);
	// 结果为:j。

四、方法——正则表达式

4.1 compile

作用:编译正则表达式

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = str.replace(pattStr2,"J")
	document.write(p2);
	// 结果为:abghtJJbfJJbv。
	pattStr2.compile("b","g");
	p2 = str.replace(pattStr2,"J")
	document.write(p2);
	// 结果为:aJghtjjJfjjJv。

4.2 exec

作用:检索字符串中指定的值。返回找到的值

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = pattStr2.exec(str)
	document.write(p2);
	// 结果为:j。无时用null

4.3 test

作用:是否有指定的值。返回 true 或 false。

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = pattStr2.test(str)
	document.write(p2);
	// 结果为:ture。无时用false

五、替换字符串——replace

作用:替换掉已知字符
语法:字符串.replace(正则表达式或字符串, replacement)
说明:replacement。替换直接字符串或返回值为字符串的函数

// 把所有j变为A。
var str = "abghtjjbfjjbv";
var p2 = str.replace(/j/g,"A");
	document.write(p2);
	// 结果为:abghtAAbfAAbv
// 把“小张”换成“小明”。
var str = "小张,吃饭了!";
var p2 = str.replace(/小张/g,"小明");
	document.write(p2);
	// 结果为:abghtAAbfAAbv

var str = "abght jjbf jjbv";
// 单词首字母大写。
var p2 = str.replace(/\b\w+\b/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1)});
	document.write(p2);
	// 结果为:Sbght Jjbf Jjbv
		

六、删除字符串——replace

// 删除所有j。
var str = "abghtjjbfjjbv";
var p2 = str.replace(/j/g,"");
	document.write(p2);
	// 结果为:abghtbfbv

七、查找字符串——search

语法:字符串.search(正则表达式)
返回值:有时,第一次匹配的位置。无时,-1。

var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j");
var p2 = str.search(pattStr2);
// var p2 = str.search(/j/);
	document.write(p2);
	// 结果为:5

八、查找字符串——match

语法:字符串.match(正则表达式)
返回值:有时,相匹配的值。无时,null。

var str = "abgd1ht5jjb6fjjbv";
var p2 = str.match(/\d+/g);
	document.write(p2);
	// 结果为:1,5,6

你可能感兴趣的:(JavaScript)